Come trovare una corrispondenza esatta con VBA in Excel (5 modi)

  • Condividi Questo
Hugh West

Se state cercando alcuni dei modi più semplici per trovare una corrispondenza esatta utilizzando VBA Quindi, iniziamo l'articolo e scopriamo i modi per trovare una corrispondenza esatta.

Scarica il libro di lavoro

VBA Trova corrispondenza esatta.xlsm

5 modi per trovare le corrispondenze esatte con VBA

Ho utilizzato la seguente tabella che riporta i risultati di alcuni studenti. Spiegherò diversi modi per trovare la corrispondenza esatta utilizzando questa tabella con l'aiuto di VBA.

A questo scopo ho utilizzato la versione di Microsoft Excel 365, ma potete utilizzare qualsiasi altra versione in base alle vostre esigenze.

Metodo 1: trovare una corrispondenza esatta in un intervallo di celle

Se si desidera trovare una corrispondenza esatta di una stringa come il nome di uno studente e quindi trovare la posizione della cella di questo studente, è possibile farlo seguendo questo metodo.

Qui, cercherò una corrispondenza esatta per lo studente chiamato "Joseph Micahel" .

Passo-01 :

Vai a Sviluppatore Scheda Visual Basic Opzione

Poi, il Editor Visual Basic si aprirà.

Vai a Inserire Scheda Modulo Opzione

Successivamente, un Modulo verrà creato.

Passo-02 :

➤Scrivete il seguente codice

 Sub searchtxt() Dim rng As Range Dim str As String Set rng = Sheets("exact match").Range("B5:B10").Find("Joseph Michael", LookIn:=xlValues) If Not rng Is Nothing Then str = rng.Address MsgBox (rng & " in " & str) End If End Sub 

Qui, "corrispondenza esatta" è il nome del foglio e "B5:B10" è l'intervallo dei nomi degli studenti e "Joseph Michael" è il nome dello studente che deve essere scoperto.

rng è dichiarato come oggetto intervallo e str come variabile stringa per memorizzare l'indirizzo dell'elemento cercato.

Il SE assegnerà l'indirizzo dell'elemento all'oggetto str variabile.

➤Stampa F5

Risultato :

Successivamente, si otterrà quanto segue Casella di messaggio contenente la posizione della cella dello studente chiamato "Joseph Michael" .

Per saperne di più: Trova all'interno di un intervallo con VBA in Excel: incluse le corrispondenze esatte e parziali

Metodo-2: trovare la corrispondenza esatta e sostituirla con VBA

Mostrerò come trovare il nome dello studente indicato e poi sostituirlo con un altro nome, perché per qualche motivo è stato scritto erroneamente qui. È possibile trovare la stringa desiderata e sostituirla seguendo questo metodo.

Passo-01 :

➤Segui Passo-01 di Metodo-1

 Sub FindandReplace() Dim rng As Range Dim str As String With Worksheets("find&replace").Range("B5:B10") Set rng = .Find("Donald Paul", LookIn:=xlValues) If Not rng Is Nothing Then str = rng.Address Do rng.Value = Replace(rng.Value, "Donald Paul", "Henry Jackson") Set rng = .FindNext(rng) Loop While Not rng Is Nothing End If End With End Sub 

Qui, "trova&sostituisci" è il nome del foglio e "B5:B10" è l'intervallo dei nomi degli studenti e "Donald Paul" è il nome dello studente che deve essere scoperto e poi "Henry Jackson" sarà il nome dello studente al posto di quello precedente.

CON eviterà di ripetere il pezzo di codice in ogni istruzione.

Il SE assegnerà l'indirizzo dell'elemento all'oggetto str e la variabile FARE sostituirà tutte le occorrenze della parola cercata.

➤Stampa F5

Risultato :

Successivamente, si otterrà il nome del nuovo studente come "Henry Jackson" .

Metodo 3: Trovare la corrispondenza esatta e sensibile alle maiuscole e alle minuscole

Se si desidera trovare una corrispondenza sensibile alle maiuscole e minuscole, seguire questo metodo. In questo caso, ho due nomi simili tra loro ma con una differenza di maiuscole e minuscole e, a seconda del caso, sostituirò il nome dell'ultimo studente.

Passo-01 :

➤Segui Passo-01 di Metodo-1

 Sub exactmatch() Dim rng As Range Dim str As String With Worksheets("case-sensitive").Range("B5:B10") Set rng = .Find("Donald Paul", LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True) If Not rng Is Nothing Then str = rng.Address Do rng.Value = Replace(rng.Value, "Donald Paul", "Henry Jackson") Set rng = .FindNext(rng) Loop While Not rng Is Nothing End If End WithSub 

Qui, "sensibile alle maiuscole" è il nome del foglio e "B5:B10" è l'intervallo dei nomi degli studenti e "Donald Paul" è il nome dello studente che deve essere scoperto, e poi "Henry Jackson" sarà il nome dello studente al posto di quello precedente.

CON eviterà di ripetere il pezzo di codice in ogni istruzione.

Il SE assegnerà l'indirizzo dell'elemento all'oggetto str e la variabile FARE sostituirà tutte le occorrenze della parola cercata.

➤Stampa F5

Risultato :

Ora, secondo il caso, il nome dello studente sarà cambiato in "Henry Jackson" .

Letture simili:

  • Come trovare una stringa in una cella usando VBA in Excel (2 metodi)
  • VBA Trova in colonna in Excel (7 approcci)
  • Come trovare una stringa con VBA in Excel (8 esempi)

Metodo-4: Utilizzo della funzione InStr

Supponiamo di voler abbinare Passo o Mancata corrispondenza ai nomi degli studenti a seconda della Colonna dei risultati dove Passo o Bocciatura Per trovare questa stringa nel file Colonna dei risultati e scrivere "Superato" nel Colonna di stato per gli studenti che hanno superato l'esame, è possibile utilizzare la funzione InStr .

Passo-01 :

➤Segui Passo-01 di Metodo-1

 Sub Checkstring() Dim cell As Range For Each cell In Range("C5:C10") If InStr(cell.Value, "Pass")> 0 Then cell.Offset(0, 1).Value = "Passed" Else cell.Offset(0, 1).Value = " " End If Next cell End Sub 

Qui, l'intervallo di celle è C5:C10 che è il Colonna dei risultati

InStr(valore cella, "Passo")> 0 è la condizione in cui il numero è maggiore di zero (quando la cella contiene "Passo" ) allora la riga successiva continuerà e fornirà l'output nella cella adiacente come Passato .

Se la condizione diventa falsa, significa che una cella non contiene alcun "Passo" allora la linea sotto ELSE verrà eseguito e fornirà il valore di uscita nella cella adiacente come Vuoto .

Questo ciclo continuerà per ogni cella.

➤Stampa F5

Risultato :

Quindi, si otterrà il "Superato" per gli studenti che hanno superato la prova.

Metodo-5: Trovare la corrispondenza esatta ed estrarre i dati

Se si vogliono estrarre i dati corrispondenti per uno studente chiamato "Michael James" è possibile seguire questo metodo.

Passo-01 :

➤Segui Passo-01 di Metodo-1

 Sub Extractdata() Dim lastusedrow As Long Dim i As Integer, icount As Integer lastusedrow = ActiveSheet.Range("B100").End(xlUp).Row For i = 1 To lastusedrow If InStr(1, Range("B" & i), "Michael James")> 0 Then icount = icount + 1 Range("E" & icount & ":G" & icount) = Range("B" & i & ":D" & i).Value End If Next i End Sub 

Qui ho utilizzato B100 come il Gamma di fogli attivi (è possibile utilizzare qualsiasi intervallo in base all'utilizzo).

InStr(1, Range("B" & i), "Michael James")> 0 è la condizione per verificare se la cella della colonna B contiene Michael James .

Intervallo("E" & icount & ":G" & icount) è l'intervallo in cui si vogliono i dati in uscita e Range("B" & i & ":D" & i).value fornirà i valori della colonna B a D .

➤Stampa F5

Risultato :

Successivamente, si otterranno i seguenti dati estratti per gli studenti che hanno il nome Michael James .

Sezione pratica

Per fare pratica da soli, abbiamo messo a disposizione un Pratica come di seguito in un foglio chiamato Pratica . per favore, fatelo da soli.

Conclusione

In questo articolo, ho cercato di illustrare i modi più semplici per trovare una corrispondenza esatta utilizzando VBA Spero che vi sia utile. Se avete suggerimenti o domande, non esitate a condividerli con noi.

Hugh West è un istruttore e analista di Excel di grande esperienza con oltre 10 anni di esperienza nel settore. Ha conseguito una laurea in Contabilità e Finanza e un Master in Economia Aziendale. Hugh ha una passione per l'insegnamento e ha sviluppato un approccio didattico unico che è facile da seguire e capire. La sua conoscenza approfondita di Excel ha aiutato migliaia di studenti e professionisti in tutto il mondo a migliorare le proprie competenze ed eccellere nella propria carriera. Attraverso il suo blog, Hugh condivide le sue conoscenze con il mondo, offrendo esercitazioni gratuite su Excel e formazione online per aiutare le persone e le aziende a raggiungere il loro pieno potenziale.