Vba: come trovare un valore in una colonna (con esempio)
È possibile utilizzare la seguente sintassi di base in VBA per trovare un valore in una colonna in Excel:
Sub FindValue()
Dim rng As Range
Dim cell As Range
Dim findString As String
'specify range to look in
Set rng = ActiveSheet.Columns(" A:A ")
'specify string to look for
findString = " Rockets "
'find cell with string
Set cell = rng.Find(What:=findString, LookIn:=xlFormulas, _
LookAt:=xlWhole, MatchCase:=False)
If cell Is Nothing Then
cell.Font.Color = vbBlack
Else
cell.Font.Color = vbRed
cell.Font.Bold = True
End If
End Sub
Questa particolare macro cercherà la stringa “Rockets” nell’intera colonna A del foglio attualmente attivo e, se trovata, cambierà il colore del carattere della cella in rosso e renderà il carattere in grassetto.
L’esempio seguente mostra come utilizzare questa sintassi nella pratica.
Esempio: come trovare un valore in una colonna utilizzando VBA
Supponiamo di avere il seguente set di dati contenente informazioni su vari giocatori di basket:
Diciamo che vogliamo trovare il nome della squadra “Rockets” nella colonna A e, una volta trovato, convertire il colore del carattere della cella in rosso e rendere il carattere in grassetto.
Per fare ciò possiamo creare la seguente macro:
Sub FindValues()
Dim rng As Range
Dim cell As Range
Dim findString As String
'specify range to look in
Set rng = ActiveSheet.Columns(" A:A ")
'specify string to look for
findString = " Rockets "
'find cell with string
Set cell = rng.Find(What:=findString, LookIn:=xlFormulas, _
LookAt:=xlWhole, MatchCase:=False)
If cell Is Nothing Then
cell.Font.Color = vbBlack
Else
cell.Font.Color = vbRed
cell.Font.Bold = True
End If
End Sub
Quando eseguiamo questa macro, riceviamo il seguente output:
Nota che il carattere nella cella contenente la stringa “Rockets” ora è rosso e in grassetto.
Tutte le altre celle hanno semplicemente mantenuto il carattere nero.
Si noti che l’argomento MatchCase:=False nel codice indica a VBA di eseguire una ricerca senza distinzione tra maiuscole e minuscole.
Quindi, se il nome della squadra nella colonna A fosse “razzi”, la macro troverebbe sempre quella stringa e renderebbe il carattere rosso e in grassetto.
Risorse addizionali
I seguenti tutorial spiegano come eseguire altre attività comuni in VBA:
VBA: come scrivere le funzioni MEDIA.SE e MEDIA.SE
VBA: come scrivere le funzioni SOMMA.SE e SOMMA.FS
VBA: come scrivere le funzioni COUNTIF e COUNTIFS