Tartalomjegyzék
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)