Jak najít přesnou shodu pomocí VBA v aplikaci Excel (5 způsobů)

  • Sdílet Toto
Hugh West

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.xlsm

5 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.

Hugh West je velmi zkušený školitel a analytik Excelu s více než 10 lety zkušeností v oboru. Má bakalářský titul v oboru Účetnictví a finance a magisterský titul v oboru Business Administration. Hugh má vášeň pro výuku a vyvinul jedinečný přístup k výuce, který lze snadno sledovat a pochopit. Jeho odborné znalosti Excelu pomohly tisícům studentů a profesionálů po celém světě zlepšit své dovednosti a vyniknout ve své kariéře. Prostřednictvím svého blogu Hugh sdílí své znalosti se světem a nabízí bezplatné výukové programy Excelu a online školení, které jednotlivcům a firmám pomohou dosáhnout jejich plného potenciálu.