Exceli FIND ja SEARCH funktsioonid koos valemiga näited

  • Jaga Seda
Michael Brown

Õpik selgitab Exceli funktsioonide FIND ja SEARCH süntaksit ning pakub valemite näiteid edasijõudnud mittetriviaalsete kasutusvõimaluste kohta.

Eelmises artiklis käsitlesime Exceli otsingu- ja asendusdialoogi põhitõdesid. Paljudes olukordades võite aga soovida, et Excel leiaks ja eraldaks andmeid teistest lahtritest automaatselt teie kriteeriumide alusel. Seega vaatame lähemalt, mida Exceli otsingufunktsioonid pakuvad.

    Exceli funktsioon FIND

    Exceli funktsiooni FIND kasutatakse selleks, et tagastada konkreetse tähemärgi või alamstringi asukoht tekstistringis.

    Exceli funktsiooni Find süntaks on järgmine:

    FIND(find_text, within_text, [start_num])

    Esimesed 2 argumenti on kohustuslikud, viimane on vabatahtlik.

    • Find_text - märki või alamjada, mida soovite leida.
    • Within_text - tekstirida, mille sees otsitakse. Tavaliselt antakse see rakuviitena, kuid te võite sisestada stringi ka otse valemisse.
    • Start_num - valikuline argument, mis määrab, millisest märgist otsing algab. Kui see jäetakse välja, algab otsing within_text stringi esimesest märgist.

    Kui funktsioon FIND ei leia find_text märki (märke), tagastatakse #VALUE! viga.

    Näiteks valemiga =FIND("d", "find") tagastab 4, sest "d" on 4. täht sõnas " leida ". Valem =FIND("a", "find") tagastab vea, sest puudub "a" sõnas " leida ".

    Exceli FIND funktsioon - asju, mida meeles pidada!

    Selleks, et kasutada Excelis õigesti FIND-valemit, pidage meeles järgmisi lihtsaid fakte:

    1. Funktsioon FIND on suur- ja väiketähelepanu Kui otsite suur- ja väiketähelepanuta vasteid, kasutage funktsiooni SEARCH.
    2. Exceli funktsioon FIND ei võimalda kasutada vabakaardimärgid .
    3. Kui argument find_text sisaldab mitut märki, tagastab funktsioon FIND positsiooni esimene märk Näiteks valem FIND("ap", "happy") annab 2, sest "a" on sõna "happy" 2. täht.
    4. Kui within_text sisaldab mitu juhtumit Näiteks FIND("l", "hello") tagastab 3, mis on sõna "hello" esimese "l"-märgi asukoht.
    5. Kui find_text on tühi string "", tagastab Exceli FIND-vormel otsingustringi esimese tähemärgi.
    6. Exceli funktsioon FIND tagastab #VALUE! error kui esineb mõni järgmistest juhtudest:
      • Find_text ei eksisteeri within_textis.
      • Start_num sisaldab rohkem tähemärke kui within_text.
      • Start_num on 0 (null) või negatiivne number.

    Exceli funktsioon SEARCH on väga sarnane funktsiooniga FIND, kuna ka see tagastab tekstistringi alajaotuse asukoha. Tema süntaks ja argumendid on sarnased funktsiooniga FIND:

    SEARCH(find_text, within_text, [start_num])

    Erinevalt FIND funktsioonist on SEARCH funktsiooniga suur- ja väiketähelepanuta ja see lubab kasutada vabakaardimärke, nagu on näidatud järgmises näites.

    Ja siin on paar põhilist Exceli SEARCH valemit:

    =SEARCH("market", "supermarket") tagastab 6, sest osaühend "market" algab sõna "supermarket" 6. tähega.

    =SEARCH("e", "Excel") tagastab 1, sest "e" on sõna "Excel" esimene märk, jättes arvestamata suurust.

    Nagu FIND, tagastab ka Exceli funktsioon SEARCH vea #VALUE!, kui:

    • Argumenti find_text väärtust ei ole leitud.
    • Argument start_num on suurem kui within_text'i pikkus.
    • Start_num on võrdne või väiksem kui null.

    Edasi selles õpetuses leiate veel mõned sisukad valemite näited, mis näitavad, kuidas kasutada funktsiooni SEARCH Exceli töölehtedel.

    Nagu juba mainitud, on Exceli funktsioonid FIND ja SEARCH süntaksi ja kasutusviiside poolest väga sarnased. Siiski on neil mõned erinevused.

    Kõige olulisem erinevus Exceli funktsioonide SEARCH ja FIND vahel on see, et SEARCH ei sõltu suur- ja väiketähendusest, samas kui FIND on suur- ja väiketähenduslik.

    Näiteks SEARCH("e", "Excel") tagastab 1, sest ta ignoreerib "E" suurust, samas kui FIND("e", "Excel") tagastab 4, sest ta arvestab suurust.

    2. Otsing metsikutega

    Erinevalt FIND funktsioonist aktsepteerib Exceli SEARCH funktsioon find_text argumendis metsikuid sümboleid:

    • Küsimärk (?) vastab ühele tähemärgile ja
    • Täht (*) sobib mis tahes tähemärkide seeriaga.

    Et näha, kuidas see toimib reaalsete andmete puhul, vaadake järgmist näidet:

    Nagu näete ülaltoodud ekraanipildil, tagastab valem SEARCH("funktsioon*2013", A2) esimese tähemärgi ("f") positsiooni alamstringis, kui within_text-argumendis viidatud tekstijada sisaldab nii "funktsiooni" kui ka "2013", olenemata sellest, kui palju muid tähemärke on vahepeal.

    Vihje. Tegeliku küsimärgi (?) või tärni (*) leidmiseks sisestage enne vastavat märki tilde (~).

    Exceli FIND ja SEARCH valemite näited

    Praktikas kasutatakse Exceli funktsioone FIND ja SEARCH harva eraldi. Tavaliselt kasutate neid koos teiste funktsioonidega, nagu MID, LEFT või RIGHT, ning järgmised valemite näited näitavad mõningaid reaalseid kasutusvõimalusi.

    Näide 1. Leia antud tähemärgile eelnev või järgnev string

    See näide näitab, kuidas leida ja eraldada kõik tähemärgid tekstisõnast vasakule või paremale teatud tähemärgist. Et asi oleks lihtsamini arusaadav, vaadake järgmist näidet.

    Oletame, et teil on nimede veerg (veerg A) ja te soovite tõmmata eesnime ja perekonnanime eraldi veergudesse.

    Eesnime saamiseks saate kasutada funktsiooni FIND (või SEARCH) koos funktsiooniga LEFT:

    =LEFT(A2, FIND(" ", A2)-1)

    või

    =LEFT(A2, SEARCH(" ", A2)-1)

    Nagu te ilmselt teate, tagastab Exceli funktsioon LEFT määratud arvu stringi vasakpoolseimaid sümboleid. Ja te kasutate funktsiooni FIND, et määrata tühiku (" ") positsioon, et funktsioon LEFT teaks, mitu märki välja võtta. Seejuures lahutate tühiku positsioonist 1, sest te ei taha, et tagastatav väärtus sisaldaks tühikut.

    Perekonnanime väljavõtmiseks kasutage funktsioonide RIGHT, FIND / SEARCH ja LEN kombinatsiooni. Funktsiooni LEN on vaja selleks, et saada stringi tähemärkide koguarv, millest lahutate tühiku positsiooni:

    =RIGHT(A2,LEN(A2)-FIND(" ",A2))

    või

    =RIGHT(A2,LEN(A2)-SEARCH(" ",A2))

    Järgnev ekraanipilt näitab tulemust:

    Keerulisemate stsenaariumide, näiteks keskmise nime väljavõtte või järelliidetega nimede jagamise kohta vt Kuidas jagada lahtreid Excelis valemite abil.

    Näide 2. Leia antud tähemärgi N-nes esinemine tekstistringis

    Oletame, et teil on veerus A mõned tekstisalmid, näiteks SKU-de nimekiri, ja te soovite leida positsiooni 2. kriipsu stringis. Järgnev valem töötab suurepäraselt:

    =FIND("-", A2, FIND("-",A2)+1)

    Kahte esimest argumenti on lihtne tõlgendada: otsige kriips ("-") lahtris A2. Kolmanda argumendiga (start_num) põimite teise FIND-funktsiooni, mis ütleb Excelile, et ta alustab otsingut alates tähemärgist, mis tuleb kohe pärast kriipsu esimest esinemist (FIND("-",A2)+1).

    Tagastab positsiooni 3. esinemine , lisate ülaltoodud valemi teise FIND-funktsiooni argumenti start_num ja lisate tagastatavale väärtusele 2:

    =FIND("-",A2, FIND("-", A2, FIND("-",A2)+1) +2)

    Teine ja tõenäoliselt lihtsam viis antud tähemärgi N-ndat esinemist leida on kasutada Exceli funktsiooni FIND koos CHAR ja SUBSTITUTE'iga:

    =FIND(CHAR(1),SUBSTITUTE(A2,"-",CHAR(1),3))

    Kus "-" on kõnealune märk ja "3" on N-nes esinemiskoht, mida soovite leida.

    Ülaltoodud valemis asendab SUBSTITUTE funktsioon kriipsu ("-") 3. esinemise CHAR(1), mis on ASCII süsteemis trükkimatu "pealkirja algus" märk. CHAR(1) asemel võite kasutada mis tahes muud trükkimatut märki vahemikus 1 kuni 31. Ja seejärel annab funktsioon FIND tagasi selle märgi asukoha tekstijoones. Seega on üldine valem järgmine:

    FIND(CHAR(1),SUBSTITUTE( rakk , märk ,CHAR(1), N-nes esinemine ))

    Esmapilgul võib tunduda, et ülaltoodud valemitel on vähe praktilist väärtust, kuid järgmine näide näitab, kui kasulikud need on reaalsete ülesannete lahendamisel.

    Märkus. Pidage meeles, et Exceli funktsioon FIND on suur- ja väiketähtedest sõltuv. Meie näite puhul ei ole see oluline, kuid kui te töötate tähtedega ja soovite, et suur- ja väiketähelepanuta sobitada, kasutage funktsiooni SEARCH asemel FIND.

    Näide 3. Väljavõte N tähemärki pärast teatud märki

    Et leida mis tahes tekstisõnastuses teatud pikkusega alamjada, kasutage Excel FIND või Excel SEARCH koos funktsiooniga MID. Järgnev näide näitab, kuidas selliseid valemeid praktikas kasutada.

    Oletame, et soovite meie SKU-de nimekirjast leida esimesed 3 märki pärast esimest kriipsu ja tõmmata need teise veergu.

    Kui esimesele kriipsule eelnev tähemärkide rühm sisaldab alati sama arvu elemente (nt 2 tähemärki), oleks see triviaalne ülesanne. Sa võid kasutada funktsiooni MID, et tagastada stringist 3 tähemärki, alustades positsioonist 4 (jättes esimesed 2 tähemärki ja kriipsu vahele):

    =MID(A2, 4, 3)

    Inglise keelde tõlgituna ütleb valem: "Otsi lahtrit A2, alusta väljavõtte tegemist märgist 4 ja tagasta 3 märki".

    Reaalsetes töölehtedes võib väljavõtet vajav alamjada aga alata ükskõik kust tekstijada sees. Meie näites ei pruugi te teada, mitu märki eelneb esimesele kriipsule. Selle probleemiga toimetulekuks kasutage funktsiooni FIND, et määrata välja otsitava alamjada alguspunkt.

    FIND valem 1. kriipsu asukoha tagastamiseks on järgmine:

    =FIND("-",A2)

    Kuna soovite alustada kriipsule järgneva tähega, lisage tagastatavale väärtusele 1 ja integreerige ülaltoodud funktsioon MID-funktsiooni teise argumenti (start_num):

    =MID(A2, FIND("-",A2)+1, 3)

    Selle stsenaariumi puhul töötab Exceli funktsioon SEARCH võrdselt hästi:

    =MID(A2, SEARCH("-",A2)+1, 3)

    See on suurepärane, kuid mis siis, kui esimesele kriipsule järgnev tähemärkide rühm sisaldab erinevat arvu tähemärke? Hmm... see võib olla probleemiks:

    Nagu näete ülaltoodud ekraanipildil, töötab valem ideaalselt ridade 1 ja 2 puhul. Ridade 4 ja 5 puhul sisaldab teine rühm 4 märki, kuid tagastatakse ainult esimesed 3 märki. Ridade 6 ja 7 puhul on teises rühmas ainult 2 märki ja seetõttu tagastab meie Exceli otsinguvormel nende järel kriipsu.

    Kui te tahaksite tagasi pöörduda kõik tähed 1. ja 2. esinemise vahel. teatud tähemärgi (antud näites kriips), kuidas te toimiksite? Siin on vastus:

    =MID(A2, FIND("-",A2)+1, FIND("-", A2, FIND("-",A2)+1) - FIND("-",A2)-1)

    Selle MID-valemi paremaks mõistmiseks uurime selle argumente ükshaaval:

    • 1. argument (tekst). See on tekstirida, mis sisaldab tähemärke, mida soovite eraldada, antud näites lahter A2.
    • 2. argument (start_position). Määrab esimese tähemärgi positsiooni, mida soovite ekstraheerida. Kasutate funktsiooni FIND, et leida esimene kriipsu stringis ja lisada sellele väärtusele 1, sest soovite alustada tähemärgist, mis järgneb kriipsule: FIND("-",A2)+1.
    • 3. argument (num_chars). Määrab tähemärkide arvu, mida soovite tagastada. Meie valemis on see kõige keerulisem osa. Te kasutate kahte FIND (või SEARCH) funktsiooni, üks määrab esimese kriipsu positsiooni: FIND("-",A2). Ja teine tagastab teise kriipsu positsiooni: FIND("-", A2, FIND("-",A2)+1). Seejärel lahutate esimesest viimasest ja seejärel lahutate 1, sest te ei taha, etet lisada kumbki kriips. Tulemusena saate 1. ja 2. kriipsu vahele jäävate märkide arvu, mis on täpselt see, mida me otsime. Niisiis söödate selle väärtuse funktsiooni MID argumendile num_chars.

    Samamoodi saab pärast 2. kriipsu tagastada 3 märki:

    =MID(A2, FIND("-",A2, FIND("-", A2, FIND("-",A2)+1) +2), 3)

    Või võtke välja kõik tähemärgid 2. ja 3. kriipsu vahel:

    =MID(A2, FIND("-", A2, FIND("-",A2)+1)+1, FIND("-",A2, FIND("-", A2, FIND("-",A2)+1) +2) - FIND("-", A2, FIND("-",A2)+1)-1)

    Näide 4. Teksti leidmine sulgude vahel

    Oletame, et teil on veerus A mingi pikk tekstijada ja te soovite leida ja eraldada ainult (sulgudes) oleva teksti.

    Selleks on vaja funktsiooni MID, mis tagastab stringist soovitud arvu tähemärke, ja kas Exceli funktsiooni FIND või SEARCH, et määrata, kust alustada ja mitu tähemärki välja võtta.

    =MID(A2,SEARCH("(",A2)+1, SEARCH(")",A2)-SEARCH("("(",A2)-1)

    Selle valemi loogika on sarnane eelmises näites käsitletuga. Ja jälle on kõige keerulisem osa viimane argument, mis ütleb valemile, mitu märki tagastada. See päris pikk väljend argumendis num_chars teeb järgmist:

    • Kõigepealt leiate sulgemissõna asukoha: SEARCH(")",A2)
    • Pärast seda leiate avaklambri asukoha: SEARCH("(",A2)
    • Ja siis arvutate lõpu- ja avasulgude positsioonide vahe ja lahutate sellest arvust 1, sest te ei taha, et kumbki sulgudes oleks tulemuses: SEARCH(")",A2)-SEARCH("("(",A2))-1

    Loomulikult ei takista miski teid kasutamast Exceli funktsiooni FIND asemel SEARCH, sest selles näites ei ole suur- ja väiketähelepanu vahet, kas suur- või väiketähelepanu ei ole.

    Loodetavasti on see õpetus valgustanud, kuidas kasutada SEARCH ja FIND funktsioone Excelis. Järgmises õpetuses uurime lähemalt REPLACE funktsiooni, nii et palun jääge kursis. Aitäh lugemise eest!

    Lae alla praktiline töövihik

    FIND ja SEARCH valemite näited

    Michael Brown on pühendunud tehnoloogia entusiast, kelle kirg on tarkvaratööriistade abil keerukate protsesside lihtsustamine. Rohkem kui kümneaastase kogemusega tehnoloogiatööstuses on ta lihvinud oma oskusi Microsoft Excelis ja Outlookis, samuti Google Sheetsis ja Docsis. Michaeli ajaveebi eesmärk on jagada oma teadmisi ja teadmisi teistega, pakkudes hõlpsasti järgitavaid näpunäiteid ja õpetusi tootlikkuse ja tõhususe parandamiseks. Olenemata sellest, kas olete kogenud professionaal või algaja, pakub Michaeli ajaveebi väärtuslikke teadmisi ja praktilisi nõuandeid nende oluliste tarkvaratööriistade maksimaalseks kasutamiseks.