Riconoscimento del range



  • Riconoscimento del range
    di ilFonta (utente non iscritto) data: 09/03/2013 16:33:11

    Purtroppo di sabato non ho niente di meglio da fare

    Ho il seguente listato che mi crea 3 istogrammi.
    Nella prima colonna ho i dati della suddivisione in frequenze ActiveSheet.Range("A2:A100")
    Nella terza colonna ho i dati veri e propri ActiveSheet.Range("C2:C9"), _ etc
    Nella quinta, settimaenona colonna vengono prodotti i dati ordinati per formare gli istogrammi di frequenze.

    Funziona tutto, ma vorrei che il programma mi riconoscesse l'intervallo dei dati veri e propri da solo, perchè ogni intervallo risiede sulla stessa colonna ed è separato da una riga vuota.

    LastRow = Cells(Rows.Count, 3).End(xlUp).Row
    For i = 1 To LastRow
    If IsEmpty(Cells(i, 3)) Then

    Cells((i + 1), 3).CurrentRegion.Select

    Io ho iniziato tramite una ricerca delle righe vuote dal basso e funziona, mi riesce anche selezionare l'intervallo giusto, ma non riesco a darlo in pasto alla parte del listato .

    Grazie per l'aiuto

     
    'ROI 
    Application.Run "ATPVBAEN.XLAM!Histogram", _
         ActiveSheet.Range("C2:C9"), _
         ActiveSheet.Range("G2"), _
         ActiveSheet.Range("A2:A100"), _
         False, False, False, False
                   
    'ROI 2
         Application.Run "ATPVBAEN.XLAM!Histogram", _
         ActiveSheet.Range("C11:C24"), _
         ActiveSheet.Range("I2"), _
         ActiveSheet.Range("A2:A100"), _
         False, False, False, False
                  
    'ROI 3
         Application.Run "ATPVBAEN.XLAM!Histogram", _
         ActiveSheet.Range("C26:C44"), _
         ActiveSheet.Range("K2"), _
         ActiveSheet.Range("A2:A100"), _
         False, False, False, False



  • di HarryBosch data: 09/03/2013 18:56:58

    Ciao ilFonta
    il vba non è niente ^_^

    Comunque vedo uno schema ciclico che si può ripetere senza nemmeno scrivere tutte le volte le istruzioni; e per trovare l'ultima cella occupata ci sono diversi modi.

    Prova a testare questa routine, che non ho modo di provare senza dati; dovrebbe fare quanto chiedevi.
    Visto che devi creare 3 istogrammi, possiamo fare un ciclo da 1 a 3 e per ognuno trovare il gruppo dei dati; che dovrà necessariamente essere separato da una cella vuota.

    L'istruzione che determina l'ultima cella piena è questa:
    LastRow = Cells(2, 3).End(xlDown).Row
    da aggiustare come vedi sotto.

    Eventualmente poi analizziamo dettagliatamente se ti sfugge qualche passaggio.
     
    Dim LastRow As Integer, FirstRow As Integer
    Dim i  As Integer, c As Integer
    
    For i = 1 To 3
           FirstRow = 2 + LastRow
           LastRow = Cells(2 + LastRow, 3).End(xlDown).Row
       
         Application.Run "ATPVBAEN.XLAM!Histogram", _
         ActiveSheet.Range(Cells(FirstRow, 3), Cells(LastRow, 3)), _
         ActiveSheet.Cells(2, 7 + c), _
         ActiveSheet.Range("A2:A100"), _
         False, False, False, False
       
       c = c + 2
    Next