Obsah
Pokud hledáte nejjednodušší způsoby, jak najít přesnou shodu pomocí VBA , pak pro vás bude tento článek užitečný. Začněme tedy s článkem a seznamte se se způsoby hledání přesné shody.
Stáhnout pracovní sešit
VBA Najít přesnou shodu.xlsm5 způsobů vyhledávání přesné shody pomocí VBA
Použil jsem následující tabulku, která obsahuje záznamy o výsledcích některých studentů. Pomocí této tabulky vysvětlím různé způsoby, jak najít přesnou shodu s pomocí VBA.
Pro tento účel jsem použil verzi Microsoft Excel 365, můžete použít i jiné verze podle toho, jak vám to vyhovuje.
Metoda 1: Nalezení přesné shody v rozsahu buněk
Pokud chcete najít přesnou shodu řetězce, například jména studenta, a poté najít pozici buňky tohoto studenta, můžete to provést podle této metody.
Zde se chystám najít přesnou shodu pro studenta se jménem "Joseph Micahel" .
Krok-01 :
➤Přejít na Vývojář Tab>> Visual Basic Možnost
Poté se Editor jazyka Visual Basic se otevře.
➤Přejít na Vložte Tab>> Modul Možnost
Poté se Modul bude vytvořen.
Krok-02 :
➤Napsat následující kód
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
Zde, "přesná shoda" je název listu a "B5:B10" je rozsah jmen studentů a "Joseph Michael" je jméno studenta, které je třeba zjistit.
rng je deklarován jako objekt rozsahu a str jako řetězcovou proměnnou pro uložení adresy hledané položky.
Na stránkách IF příkaz přiřadí adresu prvku do pole str variabilní.
➤Press F5
Výsledek :
Poté získáte následující informace Pole pro zprávy obsahující polohu buňky studenta se jménem "Joseph Michael" .
Přečtěte si více: Hledání v rozsahu pomocí VBA v aplikaci Excel: včetně přesných a částečných shod
Metoda 2: Vyhledání přesné shody a její nahrazení pomocí VBA
Ukážu vám způsob, jak najít uvedené jméno žáka a pak ho nahradit jiným jménem, protože nějakým omylem zde bylo toto jméno napsáno. Můžete si najít požadovaný řetězec a nahradit jej podle této metody.
Krok-01 :
➤Sledovat Krok-01 z Metoda-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
Zde, "find&replace" je název listu a "B5:B10" je rozsah jmen studentů a "Donald Paul" je jméno studenta, které je třeba zjistit, a pak "Henry Jackson" bude jméno studenta namísto předchozího jména.
S se vyhnete opakování části kódu v každém příkazu.
Na stránkách IF příkaz přiřadí adresu prvku do pole str a proměnnou DO smyčka nahradí všechny výskyty hledaného slova.
➤Press F5
Výsledek :
Poté se jméno nového studenta zobrazí jako "Henry Jackson" .
Metoda 3: Nalezení přesné shody a shody rozlišující malá a velká písmena
Pokud chcete najít shodu podle velikosti písmen, postupujte podle této metody. Zde mám dvě podobná jména, ale je rozdíl v velikosti písmen a v závislosti na velikosti písmen nahradím jméno posledního studenta.
Krok-01 :
➤Sledovat Krok-01 z Metoda-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 With EndSub
Zde, "case-sensitive" je název listu a "B5:B10" je rozsah jmen studentů a "Donald Paul" je jméno studenta, které je třeba zjistit, a pak "Henry Jackson" bude jméno studenta namísto předchozího jména.
S se vyhnete opakování části kódu v každém příkazu.
Na stránkách IF příkaz přiřadí adresu prvku do pole str a proměnnou DO smyčka nahradí všechny výskyty hledaného slova.
➤Press F5
Výsledek :
Nyní se podle případu jméno studenta změní na "Henry Jackson" .
Podobné čtení:
- Jak najít řetězec v buňce pomocí VBA v aplikaci Excel (2 metody)
- Hledání ve sloupci v aplikaci Excel pomocí VBA (7 přístupů)
- Jak najít řetězec pomocí VBA v aplikaci Excel (8 příkladů)
Metoda-4: Použití funkce InStr
Předpokládejme, že chcete přiřadit Předat nebo Neodpovídá ke jménům studentů v závislosti na Sloupec výsledků kde Předat nebo Selhání byl zapsán. Chcete-li tento řetězec najít v Sloupec výsledků a zapsat si "Prošlo" v Sloupec Stav pro studenty, kteří složili zkoušku, můžete použít funkce InStr .
Krok-01 :
➤Sledovat Krok-01 z Metoda-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
Zde je rozsah buněk C5:C10 což je Sloupec výsledků
InStr(cell. value, "Pass")> 0 je podmínka, kdy je číslo větší než nula (když buňka obsahuje "Pass" ), pak bude následující řádek pokračovat a ve vedlejší buňce se zobrazí výstup ve tvaru Prošlo .
Pokud se podmínka stane nepravdivou, znamená to, že buňka neobsahuje žádné "Pass" pak řádek pod ELSE se provede a poskytne výstupní hodnotu v sousední buňce jako Prázdné stránky .
Tato smyčka bude pokračovat pro každou buňku.
➤Press F5
Výsledek :
Pak získáte "Prošlo" status pro studenty, kteří prošli.
Metoda 5: Vyhledání přesné shody a extrakce dat
Pokud chcete získat odpovídající údaje pro studenta s názvem "Michael James" pak můžete použít tuto metodu.
Krok-01 :
➤Sledovat Krok-01 z Metoda-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
Zde jsem použil B100 jako Rozsah aktivních listů (můžete použít libovolný rozsah podle svého použití).
InStr(1, Range("B" & i), "Michael James")> 0 je podmínka pro kontrolu, zda buňka ve sloupci B obsahuje Michael James .
Range("E" & icount & ":G" & icount) je rozsah, ve kterém chcete mít výstupní data, a Range("B" & i & ":D" & i).value poskytne hodnoty ze sloupce B na D .
➤Press F5
Výsledek :
Poté získáte následující extrahované údaje pro studenty s daným jménem. Michael James .
Praktická část
Pro samostatné cvičení jsme připravili Cvičení sekce jako níže v listu s názvem Cvičení . Udělejte to prosím sami.
Závěr
V tomto článku jsem se pokusil popsat nejjednodušší způsoby, jak najít přesnou shodu pomocí VBA v Excelu efektivně. Doufám, že vám bude užitečný. Pokud máte nějaké návrhy nebo dotazy, neváhejte se s námi o ně podělit.