Sommario
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.xlsm5 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.