Excel IF utasítás részleges szöveges egyezéshez (joker)

  • Ossza Meg Ezt
Michael Brown

Próbál egy IF utasítást létrehozni vadkártyás szöveggel, de minden alkalommal kudarcot vall? A probléma nem a képletben, hanem magában a függvényben van - az Excel IF nem támogatja a vadkártyás karaktereket. Van azonban egy módja annak, hogy a részleges szöveg egyezés esetén működjön, és ez a bemutató megtanítja, hogyan.

Amikor részleges vagy homályos megfeleltetést szeretne végrehajtani az Excelben, a legkézenfekvőbb megoldás a jokerek használata. De mi van akkor, ha egy adott függvény, amelyet használnia kell, nem támogatja a joker karaktereket? Sajnos az Excel IF az egyik ilyen függvény. Ez különösen kiábrándító, figyelembe véve, hogy más "feltételes" függvények, mint a COUNTIF, SUMIF és AVERAGEIFS tökéletesen működnek a jokerekkel.

Szerencsére ez nem az az akadály, amely megállíthatja a kreatív Excel-felhasználót :) Az IF más függvényekkel való kombinálásával kényszerítheti a részleges egyezés kiértékelésére, és egy szép alternatívát kaphat az Excel IF joker képletére.

    Miért nem működik az Excel IF funkció a jokerrel

    Az alábbi mintatáblázatban tegyük fel, hogy ellenőrizni szeretnénk, hogy az első oszlopban szereplő azonosítók tartalmazzák-e az "A" betűt. Ha igen, akkor a B oszlopban "Igen", ha nem, akkor "Nem".

    Úgy tűnik, hogy a logikai tesztben a helyettesítő szöveg beillesztése egyszerű megoldás lenne:

    =IF(A2="*a*", "Igen", "Nem")

    De sajnos ez nem működik. A képlet minden cellára "Nem" választ ad, még az "A"-t tartalmazó cellákra is:

    Miért nem sikerül a vadkeresztes IF utasítás? Minden jel szerint az Excel nem ismeri fel az egyenlőségjellel vagy más logikai operátorral együtt használt vadkereszteket. Ha közelebbről megnézzük a vadkereszteket támogató függvények listáját, észrevehetjük, hogy a szintaxisuk feltételezi, hogy a vadkeresztes szöveg közvetlenül egy argumentumban jelenik meg, például így:

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

    Az Excel IF részleges szöveget tartalmaz

    Most, hogy már tudjuk az okát, hogy miért nem sikerül a vadkeresztes IF formula, próbáljuk meg kitalálni, hogyan lehet ezt működésre bírni. Ehhez egyszerűen beágyazunk egy olyan függvényt, amely elfogadja a vadkereszteket az IF logikai tesztjébe, nevezetesen a COUNTIF függvényt:

    IF(COUNTIF( sejt , "* szöveg *"), value_if_true, value_if_false)

    Ezzel a megközelítéssel az IF-nek nem okoz gondot a helyettesítő karakterek megértése, és hibátlanul azonosítja az "A" vagy "a" betűket tartalmazó cellákat (mivel a COUNTIF nem nagy- és kisbetű-érzékeny):

    =IF(COUNTIF(A2, "*a*"), "Igen", "Nem")

    Ez a képlet a B2-be, vagy a 2. sor bármely más cellájába kerül, majd annyi cellára húzhatja lefelé, ahányra csak szükséges:

    Ez a megoldás használható a következők felkutatására is egy adott minta karakterláncai Feltételezve, hogy csak a kötőjellel elválasztott 2 darab 2 karakterből álló csoportból álló azonosítók érvényesek, a "??-???" joker karakterláncot használhatja ezek azonosítására:

    =IF(COUNTIF(A2, "??-???"), "Érvényes", "")

    Hogyan működik ez a képlet:

    Az IF logikai teszteléséhez a COUNTIF függvényt használjuk, amely megszámolja a megadott helyettesítő karakterláncnak megfelelő cellák számát. Mivel a kritériumtartomány egyetlen cella (A2), az eredmény mindig 1 (találat) vagy 0 (nem találat). Mivel az 1 az IGAZ, a 0 pedig a FALSZ, a képlet az "Érvényes" (value_if_true) értéket adja vissza, ha a számolás 1, és egy üres karakterláncot (value_if_false), ha aa szám 0.

    IF ISNUMBER SEARCH formula részleges egyezésekhez

    Egy másik módja annak, hogy az Excel IF-et részleges szöveges egyezéshez kényszerítse, hogy a FIND vagy a SEARCH funkciót is bevonja a logikai tesztbe. A különbség az, hogy a FIND a nagy- és kisbetűkre érzékeny, míg a SEARCH nem.

    Attól függően tehát, hogy a kis- és nagybetűket azonos vagy különböző karakterekként akarja kezelni, az alábbi formulák egyike jól fog működni:

    Nagy- és kisbetű-érzékeny a részleges egyezés képlete:

    IF(ISNUMBER(SEARCH(" szöveg ", sejt )), value_if_true, value_if_false)

    Nagybetű-érzékeny a részleges egyezés képlete:

    IF(ISNUMBER(FIND(" szöveg ", sejt )), value_if_true, value_if_false)

    Mivel mindkét függvényt úgy tervezték, hogy "cellát tartalmaz" típusú egyezést végezzen, a jokerekre ebben az esetben nincs szükség.

    Például az "A" vagy "a" betűket tartalmazó azonosítók felismeréséhez a képlet a következő:

    =IF(ISNUMBER(SEARCH("A", A2)), "Igen", "Nem")

    Ha csak a nagy "A" betűket szeretné keresni, és figyelmen kívül hagyja az "a" betűket, a képlet a következő:

    =IF(ISNUMBER(FIND("A", A2)), "Igen", "Nem")

    Az alábbi képernyőképen látható B6-ban megfigyelheti a különbséget az eredményben:

    Hogyan működik ez a képlet:

    A képlet középpontjában az ISNUMBER és a SEARCH (vagy FIND) kombinációja áll:

    ISNUMBER(SEARCH("A", A2))

    A SEARCH függvény a megadott szöveget ("A" ebben a példában) keresi, és visszaadja annak pozícióját az A2 karakterláncon belül. Ha a szöveg nem található, akkor egy #VALUE hibát ad vissza. Mivel a SEARCH és a FIND is a "cellát tartalmazza" típusú egyezést hajtja végre, ebben az esetben nincs szükség vadkártyákra.

    Az ISNUMBER függvény egy számot TRUE értékké, minden más értéket, beleértve a hibát is, FALSE értékké alakít. A logikai érték közvetlenül az IF logikai tesztjébe kerül. Esetünkben az A2 "A"-t tartalmaz, így az ISNUMBER TRUE értéket ad vissza:

    IF(TRUE, "Igen", "Nem")

    Eredményként az IF visszaadja a value_if_true érv, amely "Igen".

    Excel IF OR utasítás jokerekkel

    Azonosítania kell azokat a cellákat, amelyek a vadkártyás szöveges karakterláncok valamelyikét tartalmazzák? Ebben az esetben kombinálhatja a klasszikus IF OR utasítást a fentebb tárgyalt COUNTIF vagy ISNUMBER SEARCH formulával.

    Ha például az A2-ben az "aa" VAGY a "bb" betűket keresi, figyelmen kívül hagyva a betűjeleket, és "Igen" választ ad, ha bármelyiket megtalálja, használja az alábbi formulák egyikét:

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

    vagy

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

    Két COUNTIF függvény összeadása is működik. Ebben az esetben a pluszjel úgy működik, mint a VAGY operátor:

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

    Ahelyett, hogy a képletben keményen kódolná a helyettesítő karakterláncokat, beírhatja őket külön cellákba, mondjuk a D2 és F2 cellákba, ahogy az alábbi képernyőképen látható. Vegye észre, hogy ezek a cellahivatkozások $ jellel vannak lezárva, hogy a képlet helyesen másolódjon az alábbi cellákba:

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

    A fenti formulák jól működnek 2 részleges egyezés esetén, de ha 3 vagy több részleges egyezést keres, akkor túl hosszúra nyúlnak. Ebben az esetben ésszerű, hogy másképp közelítsük meg a feladatot:

    Adjon meg több részláncot a SEARCH függvénynek egy tömbi konstansban, számolja meg a visszaadott számokat, és ellenőrizze, hogy az eredmény nagyobb-e nullánál (ami azt jelenti, hogy legalább az egyik részláncot megtalálta):

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

    Így pontosan ugyanazt az eredményt fogja elérni, de egy tömörebb képletben:

    Excel IF AND képlet jokerekkel

    Ha azt szeretné ellenőrizni, hogy egy cella két vagy több különböző részláncot tartalmaz-e, a legegyszerűbb a COUNTIFS függvényt használni, a logikai teszthez pedig a jokereket.

    Tegyük fel, hogy az A oszlopban olyan cellákat szeretne keresni, amelyekben szerepel a "b" ÉS a "2". Ehhez használja a "*b*" és a "*2*" kifejezéseket a COUNTIFS kritériumaihoz, és az A2-t a kritériumtartományhoz:

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

    Egy másik lehetőség az IF AND formula és az ISNUMBER SEARCH együttes használata:

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

    Bár ebben a képletben nem használunk joker karaktereket, mégis úgy működik, mintha két joker karakterláncot ("*b*" és "*2*") keresnénk ugyanabban a cellában.

    Természetesen semmi sem akadályozza meg, hogy a keresési értékeket előre meghatározott cellákba - esetünkben a D2 és F2 cellákba - írja be, és a cellahivatkozásokat a képletbe adja:

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

    Ha a lehető legtömörebb formulákat szereted használni, akkor a tömbi konstans megközelítést jobban kedveled. Az IF COUNT SEARCH formula nagyon hasonlít az előző példához, de mivel ezúttal mindkét részláncnak meg kell jelennie az A2-ben, ellenőrizzük, hogy a számolás egyenlő-e 2-vel:

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

    Ezek a fő módszerek az Excelben az IF utasításban a vadkereszt használatára. Ha tudsz más megoldást, a többi felhasználó biztosan értékelni fogja, ha megosztja tapasztalatait a megjegyzésekben. Köszönöm, hogy elolvastad, és remélem, hogy találkozunk a blogon a jövő héten!

    Gyakorlati munkafüzet letölthető

    Példák az Excel IF helyettesítő képletekre (.xlsx fájl)

    Michael Brown elkötelezett technológiai rajongó, aki szenvedélyesen egyszerűsíti a bonyolult folyamatokat szoftvereszközök segítségével. A technológiai iparban szerzett több mint egy évtizedes tapasztalatával a Microsoft Excel és az Outlook, valamint a Google Táblázatok és a Dokumentumok területén fejlesztette tudását. Michael blogja célja, hogy megossza tudását és szakértelmét másokkal, könnyen követhető tippeket és oktatóanyagokat adva a termelékenység és a hatékonyság javításához. Akár tapasztalt szakember, akár kezdő, Michael blogja értékes betekintést és gyakorlati tanácsokat kínál, amelyek segítségével a legtöbbet hozhatja ki ezekből az alapvető szoftvereszközökből.