Exceli IF avalduse osaline tekstivastavus (jokker)

  • Jaga Seda
Michael Brown

Proovite koostada IF-avaldust, mis sisaldab jokker-teksti, kuid see ebaõnnestub iga kord? Probleem ei ole mitte teie valemis, vaid funktsioonis endas - Excel IF ei toeta jokker-tähti. Siiski on olemas viis, kuidas see osalise teksti sobitamise korral tööle panna, ja see õpetus õpetab teile, kuidas.

Alati, kui soovite Excelis teha osalist või ebaselget sobitamist, on kõige ilmsem lahendus kasutada jokkerite kasutamist. Aga mis siis, kui konkreetne funktsioon, mida teil on vaja kasutada, ei toeta jokkerite märke? Kahjuks on Excel IF üks selliseid funktsioone. See on eriti pettumust valmistav, arvestades, et teised "tingimuslikud" funktsioonid, nagu COUNTIF, SUMIF ja AVERAGEIFS, töötavad jokkeritega suurepäraselt.

Õnneks ei ole see takistus, mis võib peatada loomingulist Exceli kasutajat :) Kombineerides IF-i teiste funktsioonidega, saate sundida seda hindama osalist kokkulangevust ja saada mõnusa alternatiivi Exceli IF-väljendusvormelile.

    Miks Exceli IF-funktsioon koos jokerskaardiga ei tööta

    Oletame, et alljärgnevas näidistabelis soovite kontrollida, kas esimeses veerus olevad ID-d sisaldavad tähte "A". Kui leidub - kuvatakse veerus B "Jah", kui mitte - kuvatakse "Ei".

    Tundub, et loogilises testis oleks lihtne lahendus, kui loogilises testis sisalduks ka jokkerite tekst:

    =IF(A2="*a*", "Jah", "Ei")

    Kuid kahjuks see ei tööta. Valem annab kõigi lahtrite puhul "Ei", isegi nende, mis sisaldavad "A":

    Miks ebaõnnestub jokerkoodi IF avaldis? Kõigest näib, et Excel ei tunne võrdusmärgiga või muude loogiliste operaatoritega kasutatavaid jokerkoode. Vaadates lähemalt jokerkoode toetavate funktsioonide loetelu, märkate, et nende süntaks eeldab, et jokerkoodi tekst esineb otse argumendis, näiteks nii:

    =COUNTIF(A2:A10, "*a*")

    Excel IF sisaldab osalist teksti

    Nüüd, kui te teate põhjust, miks IF-vormel ebaõnnestub, proovime välja mõelda, kuidas seda tööle saada. Selleks põimime lihtsalt funktsiooni, mis aktsepteerib IF-i loogilisse testimisse metsikuid sümboleid, nimelt funktsiooni COUNTIF:

    IF(COUNTIF( rakk , "* tekst *"), value_if_true, value_if_false)

    Sellise lähenemisviisi puhul ei ole IF-l probleeme metsikutest arusaamisega ja ta tuvastab veatult lahtrid, mis sisaldavad kas "A" või "a" (kuna COUNTIF ei sõltu suur- ja väiketähendusest):

    =IF(COUNTIF(A2, "*a*"), "Jah", "Ei")

    See valem läheb B2 või mõnda teise lahtrisse reas 2 ja seejärel saate seda lohistada nii paljudesse lahtritesse kui vaja:

    Seda lahendust saab kasutada ka selleks, et leida konkreetse mustri stringid Eeldades, et kehtivad ainult ID-d, mis koosnevad kahest kahest tähemärgist koosnevast grupist, mis on eraldatud sidekriipsuga, saate nende tuvastamiseks kasutada sümboli "??-???":

    =IF(COUNTIF(A2, "??-???"), "Valid", "")

    Kuidas see valem töötab:

    IF loogiliseks testimiseks kasutame funktsiooni COUNTIF, mis loeb lahtrite arvu, mis vastavad määratud märkeribale. Kuna kriteeriumide vahemik on üks lahter (A2), on tulemus alati 1 (vastavus on leitud) või 0 (vastavust ei ole leitud). Arvestades, et 1 võrdub TRUE ja 0 FALSE, annab valem "Valid" (value_if_true), kui arv on 1, ja tühja stringi (value_if_false), kuicount on 0.

    IF ISNUMBER SEARCH valem osaliste kokkulangevuste jaoks

    Teine võimalus sundida Excel IF-i töötama osalise tekstivastavuse puhul on lisada loogilisse testi kas funktsioon FIND või SEARCH. Erinevus seisneb selles, et FIND on suur- ja väiketähtede suhtes tundlik, samas kui SEARCH ei ole.

    Seega, sõltuvalt sellest, kas soovite väikseid ja suuri tähti käsitleda samade või erinevate tähtedena, töötab üks neist valemitest suurepäraselt:

    Suur- ja väike-kodanike tundmatu osalise vastavuse valem:

    IF(ISNUMBER(SEARCH(" tekst ", rakk )), value_if_true, value_if_false)

    Suur- ja väiketähenduslik osalise sobitamise valem:

    IF(ISNUMBER(FIND(" tekst ", rakk )), value_if_true, value_if_false)

    Kuna mõlemad funktsioonid on mõeldud "lahtri sisaldab" tüüpi kokkulangevuse teostamiseks, ei ole metsikuid sümboleid antud juhul tegelikult vaja.

    Näiteks "A" või "a" sisaldavate ID-de tuvastamiseks on valem järgmine:

    =IF(ISNUMBER(SEARCH("A", A2)), "Jah", "Ei")

    Et otsida ainult suurt "A" ja ignoreerida "a", on valem järgmine:

    =IF(ISNUMBER(FIND("A", A2)), "Jah", "Ei")

    Allpool esitatud ekraanipildil B6 näete erinevust tulemuses:

    Kuidas see valem töötab:

    Valemi keskmes on kombinatsioon ISNUMBER ja SEARCH (või FIND):

    ISNUMBER(SEARCH("A", A2))

    Funktsioon SEARCH otsib määratud teksti ("A" selles näites) ja tagastab selle positsiooni stringis A2. Kui teksti ei leita, tagastatakse #VALUE viga. Kuna nii SEARCH kui ka FIND on mõeldud "lahter sisaldab" tüüpi kokkulangevuse teostamiseks, ei ole jokkerid antud juhul tegelikult vajalikud.

    Funktsioon ISNUMBER teisendab arvu TRUE'ks ja mis tahes muu väärtuse, sealhulgas vea, FALSE'ks. Loogiline väärtus läheb otse IF-i loogilisele testile. Meie puhul sisaldab A2 "A", seega ISNUMBER tagastab TRUE:

    IF(TRUE, "Jah", "Ei")

    Tulemusena tagastab IF väärtuse, mis on määratud väärtusele value_if_true argument, mis on "Jah".

    Exceli IF OR avaldis koos jokkeritega

    Kas on vaja tuvastada lahtrid, mis sisaldavad ühte metsikutest tekstisõnadest? Sellisel juhul saate kombineerida klassikalise IF OR avalduse eespool käsitletud COUNTIF või ISNUMBER SEARCH valemiga.

    Näiteks, et otsida A2-s "aa" VÕI "bb", ignoreerides tähestikku ja tagastada "Jah", kui üks neist leitakse, kasutage ühte järgmistest valemitest:

    =IF(OR(ISNUMBER(SEARCH("aa", A2)), ISNUMBER(SEARCH("bb", A2))), "Jah", "")

    või

    =IF(OR(COUNTIF(A2, "*aa*"), COUNTIF(A2, "*bb*")), "Jah", "")

    Ka kahe COUNTIF-funktsiooni liitmine toimib samuti. Sel juhul töötab plussmärk nagu OR-operaator:

    =IF(COUNTIF(A3, "*aa*") + COUNTIF(A3, "*bb*"), "Jah", "")

    Selle asemel, et valemisse kõvakoodeerida wildcard stringid, võite sisestada need eraldi lahtritesse, näiteks D2 ja F2, nagu on näidatud alloleval ekraanipildil. Pange tähele, et need lahtriviited on lukustatud $-märgiga, et valem kopeeruks korrektselt allolevatesse lahtritesse:

    =IF(OR(COUNTIF(A2, "*"&$D$2& "*"), COUNTIF(A2, "*"&$F$2& "*")), "Jah", "")

    Ülaltoodud valemid toimivad hästi 2 osalise vaste puhul, kuid kui otsite 3 või rohkem, muutuvad need liiga pikaks. Sel juhul on mõistlik läheneda ülesandele teisiti:

    Andke mitu alamliidet funktsioonile SEARCH massiivi konstandina, loendage tagastatud numbrid ja kontrollige, kas tulemus on suurem kui null (mis tähendab, et vähemalt üks alamliide on leitud):

    =IF(COUNT(SEARCH({"aa", "bb"}, A2))>0, "Jah", "")

    Nii saate täpselt sama tulemuse kompaktsema valemiga:

    Exceli IF AND valem koos jokkeritega

    Kui soovite kontrollida, kas lahter sisaldab kahte või enamat erinevat alajaotust, on kõige lihtsam kasutada funktsiooni COUNTIFS, kasutades loogiliseks testiks metsikuid sümboleid.

    Oletame, et soovite leida veerus A lahtrid, mis sisaldavad nii "b" kui ka "2". Selleks kasutage COUNTIFSi kriteeriumideks "*b*" ja "*2*" ning kriteeriumide vahemikuks A2:

    =IF(COUNTIFS(A2, "*b*", A2, "*2*"), "Jah", "")

    Teine võimalus on kasutada valemit IF AND koos ISNUMBER SEARCHiga:

    =IF(AND(ISNUMBER(SEARCH("b", A2)), ISNUMBER(SEARCH("2", A2))), "Jah", "")

    Kuigi me ei sisalda selles valemis ühtegi jokker-märki, toimib see nagu kahe jokker-tähise ("*b*" ja "*2*") otsimine samas lahtris.

    Loomulikult ei takista miski teid sisestamast otsinguväärtusi etteantud lahtritesse, meie puhul D2 ja F2, ja esitamast lahtriviiteid valemile:

    =IF(AND(ISNUMBER(SEARCH($D$2, A2)), ISNUMBER(SEARCH($F$2, A2))), "Jah", "")

    Kui te eelistate kasutada kompaktsemaid valemeid, kus iganes võimalik, siis võib teile meeldida rohkem massiivi konstantide lähenemine. Valem IF COUNT SEARCH on väga sarnane eelmises näites, kuid kuna seekord peavad mõlemad alajaotused ilmuma A2-s, siis kontrollime, kas loend on võrdne 2:

    =IF(COUNT(SEARCH({"b", "2"}, A2))=2, "Jah", "")

    Need on peamised meetodid, kuidas kasutada Excelis IF-avalduses jokkerkaarti. Kui te teate muid lahendusi, on teised kasutajad kindlasti tänulikud, kui jagate oma kogemusi kommentaarides. Tänan teid lugemise eest ja loodan, et näeme teid järgmisel nädalal meie blogis!

    Praktiline töövihik allalaadimiseks

    Exceli IF-väljendusvormeli näited (.xlsx-faili)

    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.