Funkcia FIND vo VBA: Ako ju používať?

chcete sa naučiť používať Funkcia FIND vo VBA🇧🇷 Potom ste na správnom mieste!

Kto by nepoznal možnosť HĽADAŤ v Exceli? Ak už nejaký čas pracujete s Excelom, pravdepodobne ste použili funkciu HĽADAŤ alebo populárnu klávesovú skratku Ctrl + L na nájdenie slova alebo obsahu, ktorý chcete vyhľadať v celom hárku. ako celý pracovný zošit.

Vo VBA máme tiež funkciu s názvom FIND, ktorá nám môže pomôcť nájsť hodnotu, ktorú hľadáme.

Ak sa chcete dozvedieť viac o tejto funkcii prostredníctvom praktických príkladov, postupujte podľa podrobností nižšie.

Ako funguje funkcia FIND vo VBA?

Funkcia NÁJSŤ v Exceli VBA hľadá konkrétnu hodnotu v určitom rozsahu. Hľadá prvý výskyt tejto hodnoty a ak sa nájde, funkcia vráti bunku, ktorá ju obsahuje. Ak sa však nenájde žiadna zhoda, funkcia nevráti nič. Funkcia VBA FIND môže vrátiť presnú alebo čiastočnú zhodu.

Napríklad nasledujúci kód hľadá text "San Pablo» v intervale A1: A10 v “Pracovný list1🇧🇷

S hárkami("Hárok1").Rozsah("A1:A10")
Nastaviť Rng = .Find(What:="São Paulo")

Účelom použitia funkcie FIND vo VBA je nájsť požadovanú hodnotu v danom súbore údajov. Pomocou kódu VBA môžete automatizovať úlohu hľadania hodnôt v Exceli.

Syntax funkcie VBA FIND

Syntax funkcie VBA FIND je deklarovaná takto:

výraz.Nájsť(čo, po, pozrieť, pozrieť, poradie vyhľadávania, smer vyhľadávania, prípad zhody, bajt, formát vyhľadávania)

kde:

výraz: je objekt rozsahu, ktorý v kóde VBA predchádza funkciu FIND. Rozsahom vyhľadávania môže byť jeden alebo viac riadkov, stĺpcov alebo celá tabuľka. Funkcia VBA FIND akceptuje nasledujúce argumenty:

  • čo: Toto je hodnota, ktorú treba hľadať. Môže to byť numerický, textový alebo akýkoľvek iný typ údajov programu Excel. Tento argument je rovnaký ako možnosť Nájsť možnosti „nájsť a nahradiť“ z Excelu.
  • potom: Označuje bunku, z ktorej sa začne vyhľadávanie. Zadáva sa ako odkaz na jednu bunku. Ak tento argument vynecháte, vyhľadávanie sa začne po bunke v ľavom hornom rohu zadaného rozsahu vyhľadávania.
  • Pozrieť sa do: Toto je miesto (alebo údaje), kde by sa mala hodnota vyhľadať. Môže to byť komentár (xlComments), vzorec (xlFormulas) alebo hodnota (xlValues). Predvolená hodnota pre tento argument je xlFormulas. Tento argument je tiež rovnaký ako možnosť Nájsť možnosti „nájsť a nahradiť“ z Excelu.
  • Pozri: Tento argument rozhoduje o zhode celého obsahu bunky (presná zhoda) alebo časti obsahu bunky (čiastočná zhoda). Konštanty sú xlWhole a xlPart pre presné a čiastočné zhody. Predvolená hodnota pre tento argument je xlPart.
  • Poradie vyhľadávania: Tento argument naznačuje poradie vyhľadávania. Môžete určiť, či bude vyhľadávanie prebiehať v riadkoch (xlByRows) alebo stĺpcoch (xlByColumns). Predvolená hodnota pre tento argument je xlByRows. Tento argument je tiež rovnaký ako možnosť Nájsť možnosti „nájsť a nahradiť“ z Excelu.
  • Vyhľadať adresu: Označuje adresu, na ktorej sa vykoná vyhľadávanie. Pomocou konštanty xlNext môžete vyhľadávať nadol alebo na ďalšiu bunku. Prípadne môžete hľadať dozadu (nahor) alebo v predchádzajúcej bunke pomocou konštanty xlPrevious. Predvolená hodnota pre tento argument je xlNext.
  • Prípad zápasu: Tento argument rozhoduje, či by sa pri vyhľadávaní malo rozlišovať veľké a malé písmená alebo nie. Ak sa pri vyhľadávaní rozlišujú malé a veľké písmená, tento argument je špecifikovaný ako pravda (TRUE), inak je nepravdivý (FALSE). Predvolená hodnota pre tento argument je False.
  • MatchByte: Tento argument by sa mal použiť, ak niekto nainštaloval alebo vybral podporu dvojbajtového jazyka. Ak sa majú dvojbajtové znaky zhodovať s dvojbajtovými znakmi, musí byť zadané ako true. Mala by byť špecifikovaná ako nepravda, ak sa majú dvojbajtové znaky zhodovať s ich jednobajtovými ekvivalentmi.
  • vyhľadávací formát: Označuje, či má byť hľadaná hodnota v konkrétnom formáte (napríklad tučné písmo alebo kurzíva) alebo nie. Ak sa musí vyhľadávacia hodnota riadiť technikou formátovania, tento argument je špecifikovaný ako true, v opačnom prípade je false. Predvolená hodnota tohto argumentu je false (FALSE).

len argument čo nevyhnutné. Ostatné argumenty sú voliteľné.

Funkcia FIND vráti jeden z nasledujúcich výsledkov:

  • Ak sa nájde zhoda, funkcia vráti prvú bunku, kde sa nachádza hodnota.
  • Ak sa nenájde žiadna zhoda, funkcia nevráti nič. Je to preto, že funkčný objekt je nastavený na nič.

Prípadne, ak sa nenájde žiadna zhoda, vlastná správa špecifikovaná cez funkcia schránky správ možno vrátiť (pozri príklady kódu nižšie).

Poznámka 1: Vyhľadávanie začína po bunke zadanej v argumente. potom a pokračuje do poslednej bunky v rozsahu vyhľadávania. Ak sa hodnota nenájde až do tejto poslednej bunky, vyhľadávanie začne znova od prvej bunky v rozsahu vyhľadávania po bunku zadanú v argumente. potom🇧🇷

Preto bunka uvedená v argumente potom vyhľadá sa na konci procesu vyhľadávania. Viac podrobností o použití argumentu potompozri druhý príklad v tomto článku.

Poznámka 2: Zakaždým, keď sa použije funkcia VBA FIND, pozrieť sa do🇧🇷 Pozri na🇧🇷 poradie vyhľadávania y MatchByte Ak sa teda tieto hodnoty pri ďalšom použití funkcie vynechajú, Excel použije predtým uložené hodnoty. Preto sa odporúča explicitne deklarovať poskytnuté argumenty vždy, keď sa vyhľadávanie vykonáva pomocou funkcie VBA FIND.

Ako používať funkciu NÁJSŤ v Exceli VBA?

Aby ste porozumeli použitiu funkcie FIND vo VBA, nižšie sme oddelili niekoľko praktických príkladov.

Príklad 1: Výber bunky s prvým výskytom hľadanej hodnoty

V tomto prvom príklade predpokladajme, že máte zoznam, ktorý obsahuje nejaké názvy, ako je znázornené na obrázku nižšie, a chcete prehľadávať a vybrať bunku, ktorá obsahuje názov. pedro🇧🇷

Odtiaľ postupujte podľa týchto krokov:

1. Prístup k sprievodcovi Desarrollador 🇧🇷 vizuálny základ🇧🇷 (Ak v Exceli nemáte povolenú kartu Vývojár, skontrolujte tu krok za krokom).

príručka pre vývojárov

dva. Na obrazovke VBA vyberte požadovaný pracovný hárok z ponuky vľavo. V tomto príklade vyberieme Pracovný list1 čo je pracovný list, ktorý obsahuje zoznam mien.

3. Po výbere požadovaného pracovného hárka zadajte do oblasti napravo nasledujúci kód:

Vyberte bunku s prvým výskytom hľadanej hodnoty

Sub LocateName()
Rozsah("A1:A10").Nájsť (Čo:="Peter").Vybrať
End Sub
  • Všimnite si v kóde vyššie, že sme spomenuli rozsah, ktorý hľadáme (A1: A10🇧🇷
  • Po uvedení rozsahu zadajte bodku (.) a zadajte NÁJSŤ🇧🇷
  • Náš prvý argument je to, čo hľadáme. Na zdôraznenie argumentu môžeme argument odovzdať čo:=to bude užitočné pri identifikácii, na ktorý parameter sa odvolávame.
  • Záverečná časť je po nájdení slova, čo chceme robiť. Musíme vybrať slovo, takže odovzdajte argument ako .Vyberte🇧🇷
  • Potom spustite tento kód pomocou kľúča F5 alebo ručne, ako je znázornené na obrázku nižšie, vyberte prvú bunku obsahujúcu názov pedro🇧🇷

nájsť vo VBA

Príklad 2: Vyberte bunku s druhým výskytom hľadanej hodnoty

V tomto druhom príklade si všimnite, že nasledujúci obrázok obsahuje niektoré názvy v rozsahu A1:A10. Všimnite si, že názov "pedro“ sa v stĺpci A objaví dvakrát.

Vyberte bunku s druhým výskytom

V tomto prípade chceme vyhľadať a vybrať druhý výskyt mena „Peter“ v stĺpci A (to znamená bunka A7). Na tento účel použijeme nasledujúci kód:

NÁJSŤ druhý výskyt VBA

Sub LocateName()
Rozsah("A1:A10").Nájsť(Čo:="Peter", After:=Rozsah("A2")).Vybrať
End Sub

V kóde vyššie si všimnite, že vyhľadávanie začína po bunke A2 a pokračuje do poslednej bunky v stĺpci A. Dôvodom je, že rozsah vyhľadávania bol zadaný ako stĺpec A (A1:A10).

Keďže vyhľadávanie začína v bunke A3, hodnota „pedro“ je v bunke A7 dáva"tabuľka2🇧🇷 Preto sa bunka A7 vyberie funkciou NÁJSŤ pri vykonávaní kódu.

Ak názov «pedro” nebol nájdený v bunke A3 až do poslednej bunky v stĺpci A, vyhľadávanie by opäť začalo v bunke A1 a tentoraz skončilo v bunke A2. Preto bunka špecifikovaná v argumente „potom“ sa vyhľadá hneď na konci procesu vyhľadávania.

Príklad 3: Nájdite text zadaním niektorých jeho znakov

Ak chcete vyhľadať text zadaním iba jeho časti, zadajte argument Pozri na ako xlPart alebo tento argument vynechajte. Funkcia FIND štandardne porovnáva znaky vo vyhľadávanej hodnote s celým reťazcom. Potom vráti bunku, ktorá obsahuje celý tento reťazec.

Pozrite si príklad nižšie:

Sub LocateName()
Rozsah("A1:A10").Find(What:="Ped", LookAt:=xlPart).Vybrať
End Sub

Tento kód hľadá znaky "pred“ v rozsahu A1:A25 „Hárok3“. Vráti sa bunka obsahujúca hodnotu, ktorá je pomenovaná čiastočná korešpondencia🇧🇷 Takže bez ohľadu na to, či sú znaky hľadanej hodnoty umiestnené na začiatku, v strede alebo na konci reťazca, Excel VBA vráti zhodu.

pozorovania: konštanta xlPart môže byť z kódu vynechaná, pretože je to predvolená hodnota funkcie FIND. Ale ak je tento argument zadaný, uistite sa, že nie je uzavretý v dvojitých úvodzovkách.

Príklad 4: Hľadanie textu v komentári

Na vyhľadanie textu v komentári bunky v Exceli môžete použiť aj funkciu VBA FIND.

Pre lepšie pochopenie si pozrite príklad nižšie, kde máme pracovný hárok, ktorý obsahuje tri bunky s komentármi (označené červenými trojuholníkmi). Z toho chceme nájsť text „zaplatená provízia“, ktorý sa nachádza v jednom z komentárov. V tomto prípade použijeme nasledujúci kód:

Sub LocateComment()
Rozsah("A1:B10").Nájsť(Čo:="Provízia platí", LookIn:=xlComments).Vybrať
End Sub

Nájdite text v komentári

Výsledkom je, že Excel vyberie iba bunku, ktorá obsahuje komentár, ktorého text bol špecifikovaný v našom kóde.

Príklad 5: Spracovanie chýb vo funkcii FIND vo VBA

V prípade, že text, ktorý hľadáme, nie je v danom rozsahu, VBA vráti chybu, ako je uvedené nižšie:

chyba 91

Aby sme sa vyhli tejto chybe, môžeme použiť kód uvedený nižšie:

Sub LocateName()
Nejasný výsledok ako variant

On Error Resume Next
Rozsah("A1:A10").Nájsť (Čo:="Cristina").Vybrať
Pri chybe Prejsť na 0

Výsledok = ActiveCell.Value

Ak Výsledok = "" Potom
MsgBox "Hodnota, ktorú hľadáte, nie je dostupná v zadanom rozsahu!"
Koniec Sub
End If

End Sub

Všimnite si v kóde vyššie, že ak VBA nájde hodnotu, zobrazí nájdenú hodnotu, inak zobrazí správu ako "Hodnota, ktorú hľadáte, nie je v danom rozsahu dostupná🇧🇷

Ďalšie tipy, ako opraviť chyby VBA, nájdete v článku: Chyby Excel VBA: všetko, čo potrebujete vedieť!

Podrobnosti na zapamätanie

  • Funkcia NÁJSŤ je súčasťou vlastnosti ROZSAH a mali by ste použiť NÁJSŤ po výbere iba rozsahu.
  • Vo funkcii FIND je prvý argument (čo), plus všetko ostatné je voliteľné.
  • Ak nájdete hodnotu za konkrétnou bunkou, môžete bunku uviesť v parametri potom syntaxe vyhľadávania.

Stiahnite si tabuľku tu obsahujúce príklady uvedené v tomto návode.

Pozrite si aj nasledujúce tipy programu Excel:

Čo si teda myslíte o funkcii FIND vo VBA? Ak máte nejaké otázky, zanechajte komentár nižšie. Pozrite si aj ďalšie tipy pre Excel a VBA na našej webovej stránke!

Tommy Banks
Radi si vypočujeme váš názor

Zanechať Odpoveď

TechnoBreak | Ponuky a recenzie
logo
Povoliť registráciu v nastaveniach - všeobecne
Nákupný vozík