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

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *