Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    633

    [EXCEL] intervallo dati variabile

    Ciao a tutti,
    allora io ho un grafico in Excel che prende i dati da un file di testo e li aggiorna all'apertura.
    i dati sono disposti in una riga e sono del tipo:

    intestazione 12 12 23 4 12 6

    il mio problema è che il numero delle cifre può essere variabile.
    Io riesco a mettere ogni cifra in una cella differente, ma non riesco a rendere "dinamico" l'intervallo delle celle considerati dal grafico.

    come si fa?
    in sostanza deve prendere le celle che contengono qualcosa e non considerare le restanti.

    non so se sono stato chiaro.
    Alcuni miei articoli in PRO.HTML.IT: JavaScript | DHTML | DOM
    Sviluppo : wedev | forum

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    633
    nessuno?
    Alcuni miei articoli in PRO.HTML.IT: JavaScript | DHTML | DOM
    Sviluppo : wedev | forum

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    1,798
    Non ho sottomano Excel, ma fai così:
    creain un foglio di prova nel quale inserisci in una riga un poco di numeri.
    In pratica simuliamo il tuo lavoro.
    Usando i tasti di direzione seleziona la cella più a sinistra, dovrebbe essere l'intestazione (non ha molta importanza).
    A questo punto attiva il registratore di macro per poi ricavarti il codice VBA.
    Ora premi contemporaneamente CTRL-SHIFT ed il tasto di direzione che ti porta alla fine della riga (devrebbe essere il DESTRO). Se tutto è ok vedrai le celle dove hai inserito i numeri selezionate.
    A questo punto premi il pulsante per creare il grafico usando l'autocomposizione, scegli il grafico, ecc. Ora puoi terminare la registrazione della macro. Se vai a guardare nel codice VBA cerca il codice della tua macro ed adattelo un poco al resto del tuo codice, et voilà il gioco è fatto.
    Non dovrebbe esserti difficile.

    Spero di averti aiutato.

    Ciao !
    Slack? Smack!

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    633

    WOW!!

    ECCEZIONALE (e non avevi nemmeno Excel sottomano !!!)

    Grazie tante!!
    ho solo un problema: ammesso (e non concesso) che riesca a modificare il codice a mio piacimento (il VB lo conosco poco), non riesco a mettere una firma digitale al mio progetto.
    non ho alcun certificato da utilizzare.

    percui quando chiudo e riapro il foglio (per vedere ad esempio se cambiando l'intervallo di dati si modifica il grafico) non riesco più ad accedere alla mia macro.

    A proposito: se io cambio il mio intervallo (nella nostra prova, ad esempio), come posso riaggiornare il grafico?
    c'è un modo che non passi dal chiudere/riaprire il documento excel?
    Alcuni miei articoli in PRO.HTML.IT: JavaScript | DHTML | DOM
    Sviluppo : wedev | forum

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    1,798
    Visto che non conosci molto VBA cercherò di essere semplice.
    Per quanto riguarda la firma digitale, non so aiutarti perchè non ho esperienza, comunque hai la possibilità di proteggere il codice VBA tramite password dall'editor del Visual Basic.
    La macro dell'esempio non era collegata a nessun evento, entrava in azione solo quando glielo chiedevi tu.
    Dovresti cercare di inserirla in un evento di apertura/caricamento del foglio/cartella di lavoro, oppure un'altro evento più congeniale al tuo lavoro.
    Mi pare ci sia Workbook_Open, Worksheet_Open , qualcosa del genere.
    Naturalmente i metodi di apertura del foglio di lavoro agiscono solo una volta, quindi prova ad aggiungere un pulsante che ti aggiorna automaticamente i dati.
    In ogni caso leggi la documentazione in linea per toglierti ogni dubbio, oppure posta qui sul forum.
    Al massimo mandami per email un'allegato del tuo file excel che gli do una guardata al lavoro...

    Ciao.
    Slack? Smack!

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    633
    inanzitutto grazie!
    Non conosco molto il VBA, ma conosco altri linguaggi, percui penso di sapermi destreggiare un po', infatti sono riuscito modificare a mio piacimento e a lanciare la macro all'evento Activate del grafico.
    Avrei qualche domanda sull'uso degli eventi:

    1)il codice per lanciare la macro sull'evento Activate l'ho messo nel codice del mio Grafico (è un nuovo foglio). Mi domandavo se fosse possibile metterlo nel modulo che contiene anche la macro (per unificare i codici), ma sembra che non gli piaccia molto, come si può fare?
    Servirebbe qualcosa del tipo:

    Private Sub Charts("Grafico")_Activate()
    Macro
    End Sub

    ma non va!

    2)ho provato anche a lanciare la macro all'apertura del file .xsl con:

    Private Sub Woorkbook_Activate()
    Macro
    End Sub

    sia nel codice del grafico, sia nel modulo della macro, ma non va. Dove va messo?

    Grazie mille per la disponibilità.
    ciao
    Alcuni miei articoli in PRO.HTML.IT: JavaScript | DHTML | DOM
    Sviluppo : wedev | forum

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    633

    Risultato Finale

    dopo diverse prove sono arrivato a questo risultato finale,
    lo posto in modo che se vedi degli errori tu possa segnalarmeli
    (poi magari può servire a qualcuno):

    Nel mio documento excel ci sono 2 fogli:
    "dati" (foglio dati - che conterrà i dati prelevati da dati.txt)
    "grafico" (grafico - che si aggiorna automaticamente all'apertura prendendo i dati da "dati")

    nel ThisWorkbook del documento ho inserito il seguente codice:

    codice:
    Private Sub Workbook_Open()
    If ControllaPresenzaDati() = True Then
        PrendiDati
        AggiornaGrafico
    Else
    avviso = MsgBox("il file dati.txt NON E' PRESENTE nella stessa cartella di GRAFICO.xsl" & Chr(13) & Chr(13) & "Il grafico visualizzato è relativo ai dati salvati in precedenza", vbOKOnly + vbExclamation)
    End If
    End Sub
    
    Function ControllaPresenzaDati()
    With Application.FileSearch
        .NewSearch
        .LookIn = ThisWorkbook.Path
        .SearchSubFolders = False
        .Filename = "dati.txt"
        ControllaPresenzaDati = .Execute() > 0
    End With
    
    End Function
    
    
    
    Sub PrendiDati()
    '
    ' PrendiDati Macro
    ' Macro registrata il 08/01/2003 da William Verdolini
    
        Sheets("dati").Select
        With Selection.QueryTable
            .Connection = "TEXT;" & ThisWorkbook.Path & "\dati.txt"
            .TextFilePlatform = 850
            .TextFileStartRow = 1
            .TextFileParseType = xlDelimited
            .TextFileTextQualifier = xlTextQualifierDoubleQuote
            .TextFileConsecutiveDelimiter = True
            .TextFileTabDelimiter = True
            .TextFileSemicolonDelimiter = False
            .TextFileCommaDelimiter = False
            .TextFileSpaceDelimiter = True
            .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
            .TextFileTrailingMinusNumbers = True
            .Refresh BackgroundQuery:=False
        End With
        With Selection.QueryTable
            .Name = "dati"
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = True
            .RefreshStyle = xlOverwriteCells
            .SavePassword = False
            .SaveData = False
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .TextFilePromptOnRefresh = False
        End With
    End Sub
    
    Sub AggiornaGrafico()
    '
    ' AggiornaGrafico Macro
    ' Macro registrata il 07/01/2003 da William Verdolini
    '
        
        colonna = 1
        Do While Not TypeName(Sheets("dati").Cells(1, colonna).Value) = "Empty"
            Intervallo = "A1:" & Sheets("dati").Cells(1, colonna).Address(False, False)
           colonna = colonna + 1
        Loop
        
        Charts("Grafico").ChartType = xlLineMarkersStacked
        Charts("Grafico").SetSourceData Source:=Sheets("dati").Range(Intervallo), PlotBy:= _
            xlRows
    '    ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="Grafico"
        With Charts("Grafico")
            .HasTitle = True
            .ChartTitle.Characters.Text = "Distanza Minima stimata ad ogni iterazione dell 'algoritmo di decodifica"
            .Axes(xlCategory, xlPrimary).HasTitle = True
            .Axes(xlValue, xlPrimary).HasTitle = True
        End With
        
        Sheets("Grafico").Activate
    End Sub
    Questo è quanto.
    Immagino che sarebbe meglio poter eliminare l'aggiornamento
    automatico del grafico (tanto lo aggiorno poi io all'apertura),
    ma per far questo dovrei creare una nuova QueryTable, ma per il
    momento non l'ho fatto (penso che non sia complicato...però)

    grazie Sergio,
    sei stato indispensabile,
    ora so recuperarmi le macro e ho incominciato
    a scriverne qualcuna mia. Devo dire che Excel si è rivelato
    un programma affascinante!!
    grazie ancora,
    ciauz
    Alcuni miei articoli in PRO.HTML.IT: JavaScript | DHTML | DOM
    Sviluppo : wedev | forum

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    1,798
    :adhone:

    Grazie, ma non esageriamo.
    Anzi, complimenti e buon lavoro !

    Slack? Smack!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.