Ako nájsť presnú zhodu pomocou VBA v programe Excel (5 spôsobov)

  • Zdieľajte To
Hugh West

Ak hľadáte najjednoduchšie spôsoby, ako nájsť presnú zhodu pomocou VBA , potom pre vás bude tento článok užitočný. Začnime teda článkom a zoznámime sa so spôsobmi hľadania presnej zhody.

Stiahnite si pracovný zošit

VBA Nájsť presnú zhodu.xlsm

5 spôsobov vyhľadávania presnej zhody pomocou VBA

Použil som nasledujúcu tabuľku, v ktorej sú záznamy o výsledkoch niektorých študentov. Pomocou tejto tabuľky vysvetlím rôzne spôsoby, ako nájsť presnú zhodu VBA.

Na tento účel som použil verziu Microsoft Excel 365, môžete použiť akúkoľvek inú verziu podľa toho, ako vám to vyhovuje.

Metóda 1: Vyhľadanie presnej zhody v rozsahu buniek

Ak chcete nájsť presnú zhodu reťazca, ako je meno študenta, a potom nájsť pozíciu bunky tohto študenta, môžete to urobiť podľa tejto metódy.

Tu nájdem presnú zhodu pre študenta s názvom "Joseph Micahel" .

Krok-01 :

➤ Prejsť na Vývojár Tab>> Visual Basic Možnosť

Potom sa Editor jazyka Visual Basic sa otvorí.

➤ Prejsť na Vložte Tab>> Modul Možnosť

Potom sa Modul sa vytvorí.

Krok-02 :

➤Napíšte nasledujúci 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 

Tu, "presná zhoda" je názov listu a "B5:B10" je rozsah mien študentov a "Joseph Michael" je meno študenta, ktoré sa má zistiť.

rng je deklarovaný ako objekt rozsahu a str ako reťazcovú premennú na uloženie adresy hľadanej položky.

Stránka IF príkaz priradí adresu položky k str premenná.

➤Press F5

Výsledok :

Potom sa zobrazia tieto informácie Rámček na správy obsahujúce polohu bunky študenta s názvom "Joseph Michael" .

Prečítajte si viac: Vyhľadávanie v rozsahu pomocou VBA v programe Excel: vrátane presných a čiastočných zhody

Metóda 2: Vyhľadanie presnej zhody a jej nahradenie pomocou VBA

Ukážem spôsob, ako nájsť uvedené meno žiaka a potom ho nahradiť iným menom, pretože nejakým omylom tu bolo toto meno napísané. Môžete nájsť požadovaný reťazec a nahradiť ho podľa tejto metódy.

Krok-01 :

➤Sledovať Krok-01 z Metóda 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 

Tu, "find&replace" je názov listu a "B5:B10" je rozsah mien študentov a "Donald Paul" je meno študenta, ktoré sa má zistiť, a potom "Henry Jackson" bude meno študenta namiesto predchádzajúceho mena.

S sa vyhnete opakovaniu časti kódu v každom príkaze.

Stránka IF príkaz priradí adresu položky k str a premenná DO slučka nahradí všetky výskyty hľadaného slova.

➤Press F5

Výsledok :

Potom dostanete meno nového študenta ako "Henry Jackson" .

Metóda 3: Hľadanie presnej zhody a zhody citlivej na veľkosť písmen

Ak chcete nájsť zhodu podľa veľkosti písmen, postupujte podľa tejto metódy. Tu mám dve podobné mená, ale je tu rozdiel v veľkosti písmen a v závislosti od veľkosti písmen nahradím meno posledného študenta.

Krok-01 :

➤Sledovať Krok-01 z Metóda 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 

Tu, "case-sensitive" je názov listu a "B5:B10" je rozsah mien študentov a "Donald Paul" je meno študenta, ktoré sa má zistiť, a potom "Henry Jackson" bude meno študenta namiesto predchádzajúceho mena.

S sa vyhnete opakovaniu časti kódu v každom príkaze.

Stránka IF príkaz priradí adresu položky k str a premenná DO slučka nahradí všetky výskyty hľadaného slova.

➤Press F5

Výsledok :

Podľa prípadu sa teraz meno študenta zmení na "Henry Jackson" .

Podobné čítanie:

  • Ako nájsť reťazec v bunke pomocou VBA v programe Excel (2 metódy)
  • Vyhľadávanie v stĺpci v programe Excel pomocou VBA (7 prístupov)
  • Ako nájsť reťazec pomocou VBA v programe Excel (8 príkladov)

Metóda 4: Použitie funkcie InStr

Predpokladajme, že chcete priradiť Prejsť alebo Nedodržanie korešpondencie k menám študentov v závislosti od Stĺpec s výsledkom kde Prejsť alebo Zlyhanie bol zapísaný. Ak chcete nájsť tento reťazec v Stĺpec s výsledkom a zapíšte si "Prešiel" v Stĺpec Stav pre študentov, ktorí úspešne absolvovali skúšku, môžete použiť funkcia InStr .

Krok-01 :

➤Sledovať Krok-01 z Metóda 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 

Tu je rozsah buniek C5:C10 čo je Stĺpec s výsledkom

InStr(cell. value, "Pass")> 0 je stav, keď je číslo väčšie ako nula (keď bunka obsahuje "Pass" ), potom bude nasledujúci riadok pokračovať a poskytne výstup v susednej bunke ako Prešiel .

Ak sa podmienka stane nepravdivou, znamená to, že bunka neobsahuje žiadne "Pass" potom riadok pod ELSE sa vykoná a poskytne výstupnú hodnotu v susednej bunke ako Prázdne stránky .

Táto slučka bude pokračovať pre každú bunku.

➤Press F5

Výsledok :

Potom získate "Prešiel" štatút pre študentov, ktorí ho získali.

Metóda 5: Vyhľadanie presnej zhody a extrahovanie údajov

Ak chcete získať príslušné údaje pre študenta s názvom "Michael James" potom môžete postupovať podľa tejto metódy.

Krok-01 :

➤Sledovať Krok-01 z Metóda 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 

Tu som použil B100 ako Rozsah aktívneho listu (môžete použiť ľubovoľný rozsah podľa vášho použitia).

InStr(1, Range("B" & i), "Michael James")> 0 je podmienka na kontrolu, či bunka v stĺpci B obsahuje Michael James .

Range("E" & icount & ":G" & icount) je rozsah, v ktorom chcete mať výstupné údaje, a Range("B" & i & ":D" & i).value poskytne hodnoty zo stĺpca B na D .

➤Press F5

Výsledok :

Následne získate nasledujúce extrahované údaje pre študentov s menom Michael James .

Praktická časť

Na precvičovanie sme vám poskytli Prax sekciu ako nižšie v hárku s názvom Prax . Prosím, urobte to sami.

Záver

V tomto článku som sa snažil opísať najjednoduchšie spôsoby, ako nájsť presnú zhodu pomocou VBA v programe Excel efektívne. Dúfam, že vám to bude užitočné. Ak máte nejaké návrhy alebo otázky, neváhajte sa s nami o ne podeliť.

Hugh West je veľmi skúsený tréner a analytik Excelu s viac ako 10-ročnými skúsenosťami v tomto odvetví. Má bakalársky titul v odbore účtovníctvo a financie a magisterský titul v odbore Business Administration. Hugh má vášeň pre vyučovanie a vyvinul jedinečný vyučovací prístup, ktorý sa dá ľahko sledovať a pochopiť. Jeho odborné znalosti Excelu pomohli tisíckam študentov a profesionálov na celom svete zlepšiť svoje zručnosti a vyniknúť vo svojej kariére. Hugh sa prostredníctvom svojho blogu delí o svoje znalosti so svetom a ponúka bezplatné výukové programy Excelu a online školenia, ktoré jednotlivcom a firmám pomôžu naplno využiť ich potenciál.