Categorie
Automazione Excel

Trovare le coordinate della cella che contiene un determinato valore

Il problema di individuare le coordinate di un marcatore in un file Excel consiste nel trovare la posizione esatta di un determinato valore all’interno di un foglio di calcolo.

Un marcatore può essere un simbolo, un valore numerico, una stringa di testo o un’altra forma di dati. Una volta individuato il marcatore, è necessario trovare le coordinate esatte del marcatore all’interno del foglio di calcolo.

Questo può essere fatto esaminando manualmente il foglio di calcolo o utilizzando una funzione specifica del software Excel. Una volta trovate le coordinate, è possibile utilizzare le coordinate per creare formule o altre funzionalità all’interno del file Excel.

Questo problema è particolarmente utile quando è necessario confrontare, modificare o utilizzare un dato situato in una parte specifica del foglio di calcolo. Ad esempio, se si desidera utilizzare un dato situato nella colonna B per calcolare un valore in una cella della colonna D, è necessario conoscere le coordinate esatte della cella nella colonna B.

Ad esempio, supponiamo che un foglio di calcolo contenga nella colonna B un elenco di regioni italiane e vogliamo individuare il marcatore ‘Liguria’ come in figura

Il problema è estrarre le coordinate B9

La soluzione può essere ottenuta utilizzando la funzione “Find” di Visual Basic per scrivere la seguente routine :

Sub TrovaCoordinateValore(ValueToFind As String)
Dim x As Long, y As LongSet Rng = Sheets(“Foglio2”).Range(“B1:B21”)Set C = Rng.Find(ValueToFind, LookIn:=xlValues)If Not C Is Nothing Then
x = C.Column
y = C.Row
MsgBox (NumCol2Letter(x) & y)
Else
MsgBox “Value not found”
End If
End Sub

La funzione Sub TrovaCoordinateValore() è una funzione che cerca un valore all’interno di una determinata cella su un foglio di lavoro. La funzione richiede come argomento una stringa contenente il valore da cercare. La funzione inizia dichiarando due variabili interi chiamate x e y. Un intervallo (Rng) viene quindi impostato su una cella specifica su un foglio di lavoro (in questo caso, la cella B1:B21 su un foglio di lavoro chiamato Foglio2). La funzione quindi utilizza il metodo Find() per cercare il valore specificato nell’intervallo specificato. Se il valore viene trovato, le variabili x e y vengono impostate sulla colonna e sulla riga della cella trovata. Un messaggio viene quindi visualizzato contenente le coordinate della cella in formato lettera-numero (ad esempio, A5). Se il valore non viene trovato, viene visualizzato un messaggio indicante che il valore non è stato trovato.

La funzione NumCol2Letter serve a convertire il numero di colonna che viene individuato dalla funzione Find in lettera, la sintassi della funzione è la seguente:

Function NumCol2Letter(nCol As Long) As StringDim i As Long

i = nCol
NumCol2Letter = “”

Do While nCol > 0
i = Int((nCol – 1) / 26)
NumCol2Letter = Chr(((nCol – 1) Mod 26) + 65) & NumCol2Letter
nCol = i
Loop

End Function

Questa funzione converte il numero di una colonna in una lettera. Prende come argomento un numero intero che rappresenta una colonna e ritorna una stringa che rappresenta la lettera corrispondente alla colonna. La funzione esegue un ciclo Do-While utilizzando la funzione Int per convertire il numero della colonna in una lettera. Ad ogni giro del ciclo, il numero viene diviso per 26 e il resto viene aggiunto a NumCol2Letter. Quando nCol è uguale a 0, il ciclo viene interrotto e la stringa NumCol2Letter viene restituita come risultato della funzione.

Non resta a questo punto che utilizzare la funzione La funzione TrovaCoordinateValore() in questo modo:

Dim Valore As String
Valore = “Liguria”
TrovaCoordinateValore (Valore)

La funzione TrovaCoordinateValore() prende una stringa come argomento (in questo caso “Liguria”) e la utilizza per cercare le coordinate corrispondenti su una mappa. Il risultato sarà una stringa con le coordinate trovate: B9