In un foglio di calcolo il problema della individuazione dell’ ultima riga e dell’ ultima colonna in foglio di calcolo consiste nel determinare la posizione dell’ ultima riga e dell’ ultima colonna in cui sono presenti dei valori.
Nelle automazioni dei file Excel è fondamentale conoscere queste coordinate per poter effettuare ricerche, elaborazioni e scrivere nelle opportune celle senza rischiare di persedere dati andando a sovrascriverli.
In particolare, se si vuole individuare la riga finale, bisogna considerare tutte le righe del foglio di calcolo e contarle. La riga finale sarà quella contenente il numero più alto. Analogamente, per individuare la colonna finale, bisogna considerare tutte le colonne del foglio di calcolo e contarle. La colonna finale sarà quella contenente il numero più basso.
Se per le righe va bene individuare il numero più alto, per le colonne non basta individuare il numero per riferirsi correttamente alle coordinate della colonna perchè queste sono espresse in lettere.
Sarà necessario convertire il numero in lettere. E’ questa la parte più complessa: Excel può utilizzare un massimo di 16.384 colonne, a cui ci si riferisce con lettere partendo dalla A alla Z per le prime 26 colonne, continuando dalla AA alla AZ per le successive 26 colonne, proseguendo ancora dalla BA alla BZ per altre 26 colonne e così via fino alla colonna 16348 che verrà espressa dalla sequenza di lettere XFD
Vediamo con una macro di esempio come gestire questo problema.
In figura una base dati di 21 righe e 3 colonne che riportano id, regione e popolazione. La riga 21 contiene gli ultimi dati e la colonna C è l’ultima colonna con dati. Quindi in questo esempio bisogna recuperare le informazioni 21 per l’ ultima riga e ‘C’ per l’ultima colonna.
‘Variabili Dim DatiSheet As Worksheet Dim DatiRange As Range Dim LastRow, LastCol As Long Dim LastColLetter As String |
Supponendo che i dati si trovino nel ‘Foglio1’ del file Excel ecco come calcolare il valore numerico della ultima riga e della ultima colonna valorizzati
‘Foglio dati Set DatiSheet = Worksheets(“Foglio2”)’Calcolo ultima riga e ultima colonna con dati LastRow = DatiSheet.UsedRange.Rows.Count LastCol = DatiSheet.UsedRange.Columns.Count |
A questo punto la variabile LastRow contiene il valore 21 cioè l’ultima riga con dati mentre LastCol contiene il valore 3 che deve essere convertito in lettera.
Scriviamo la seguente funzione di conversione da numero a sequenza di lettere
Function NumCol2Letter(nCol As Long) As StringDim i As Long
i = nCol Do While nCol > 0 End Function |
Quindi a questo punto possiamo riferirci all’ ultima colonna con dati richiamando la funzione appena scritta passandogli come argomento il numero colonna LastCol, come di seguito ad esempio
MsgBox NumCol2Letter(LastCol) |
Ecco la subroutine che recupera e mostra a video LastRow e LastCol
Sub AggiornaGrafico()Dim DatiSheet As Worksheet
Dim LastRow, LastCol As Long ‘Foglio dati ‘Calcolo ultima riga e ultima colonna con dati MsgBox LastRow End Sub |