a HA függvény, különlegességek

2020-10-24    Excel 2019
fogalmak
A HA függvény az első argumentumával meghatározott feltétel teljesülését vizsgálja. Ha a feltétel teljesül, akkor végrehajtja a második argumentumával deklarált műveletet. Ha nem, akkor a harmadik argumentumával meghatározottat. Az első két argumentum kötelező. Ha a feltétel nem teljesül és a felhasználó nem deklarált „hamis-műveletet”, akkor a függvény HAMIS logikai értéket ad eredményül. Ez a függvény szokásos használata. A nem szokásos… Erről szól a cikk.
egyetlen feltétel
De először vegyük az alapesetet. A függvény első argumentuma tehát egy feltétel, de fogalmazhatnánk úgy is, hogy egy tetszőleges kifejezés, amely logikai értéket ad eredményül: IGAZ-at vagy HAMIS-at.
egyszerű feltételek a HA függvény első argumentumában
A HA függvény első argumentumában álló dátum- és idő konstansokat a DÁTUMÉRTÉK és az IDŐÉRTÉK függvényekkel számmá kell alakítanunk. Ez a szabály a logikai függvényekre is vonatkozik! A két függvény egyetlen argumentuma a szövegként megadott dátum illetve idő.
dátum- és időkonstans átalakítása a DÁTUMÉRTÉK és IDŐÉRTÉK függvényekkel
Az Excelben kevésbé járatos felhasználók körében gyakran előfordul a hivatkozott logikai érték relációba helyezése. Megmutatom miről van szó!
logikai érték beolvasása a HA függvény első argumentumában
A dicséretben részesült kollégák prémiumot kapnak, amely a fizetésük fele. A HA függvény első argumentuma tehát egy hivatkozás, amellyel arra utasítjuk a programot, hogy olvassa ki a logikai értéket a cellából. Tehát, nem azt mondjuk, vizsgáld meg a cellát, IGAZ-t tartalmaz-e, mert a vizsgálat eredménye azonos lenne a cella tartalmával.
logikai értéket adó hivatkozás a HA függvény első argumentumában
A függvény akkor is működik, ha az első argumentumának kiértékelése nem logikai értéket, hanem egyet vagy nullát ad eredményül. A nulla a HAMIS-sal, az egy az IGAZ-zal egyenértékű.
a HA függvény első argumentumában álló kifejezés, amely nulla és egy eredményt ad
Sőt! Elárulok valamit. De, maradjon titok! Nem csak eggyel és nullával, de bármilyen számmal működik a függvény: HA( <szám> ; <művelet, ha szám nem nulla> ; <művelet, ha szám nulla> ).
Figyelem, figyelem! A HA( <logikai kifejezés> ; IGAZ ; HAMIS ) formula alkalmazása amatőrség! Az ilyen típusú vizsgálatokhoz ugyanis nincs szükség a HA függvényre. A program, még az összetett logikai kifejezésekkel is gond nélkül elboldogul és IGAZ-at vagy HAMIS-at ad eredményül.
feltétel-rendszer
Az ÜRES függvényes példa, elgondolkodtató… Logikai értéket eredményező függvényt is lehet használni?! Hát, akkor több feltételt is deklarálhatunk! Vegyük számba a szóba jöhető függvényeket!
többargumentumos függvények a HA függvény első argumentumában
A bal oldali táblázat sorait vizsgáltattam meg a többargumentumos logikai függvényekkel. Három feltételt határoztam meg. Legyen kör, legyen vékony és a daraszám legyen legalább hat. A kritériumoknak megfelelő cellákat szürkével színeztem. A jobb oldali tábla a vizsgálat eredményét tartalmazza. Az IGAZ eredményeket kékkel jelöltem.
Tehát a feltétel-rendszer kialakításához három függvényt vehetünk igénybe. A beírás módja szokásos: =HA( VAGY/ÉS/XVAGY( <kifejezés1> ; <kifejezés2> ; <kifejezés3> … <kifejezés255> ) ; <igaz-művelet> ; <hamis-művelet> ).
A három függvény argumentumai logikai eredményt adó kifejezések. A VAGY akkor ad IGAZ-at, ha legalább egy argumentuma IGAZ. Az ÉS csak akkor, ha minden argumentuma IGAZ. Az XVAGY pedig akkor, ha argumentumainak göngyölített kiértékelése végül ellentétes logikai értékeket eredményez. Elmagyarázom!
„Versikéje” alapján az XVAGY-ot kizáró VAGY-nak is hívhatjuk: vagy az egyik, vagy a másik. Más variáció nincs. Igen ám, de az XVAGY-nak kettőnél több argumentuma is lehet! Ezt az ellentmondást a program göngyölített kiértékeléssel oldja fel: az argumentumok kiértékelése balról jobbra halad, mindig csak két tényezőt figyelembe véve. Az első az eddigi lépések göngyölített eredménye a másik a következő argumentum kiértékelésének eredménye. Valahogy így:
az XVAGY függvény argumentumainak kiértékelése
Amióta az „ismeretlen programozó”, aki nem más, mint jakutföldi Fegya, észrevette, hogy ha az IGAZ értéket adó argumentumok száma páratlan, akkor a végeredmény mindig IGAZ és ha páros, akkor meg mindig HAMIS, szóval amióta észrevette, azóta csak ezt lehet olvasni minden ismertetőben.
Feltétel-rendszer segítségével tudjuk elrejteni az előre elkészített, de még feldolgozandó adatok nélküli képlet eredményét is. Miről van szó! Előkészítünk egy táblázatot, meghatározott tevékenység támogatására. Például, egy kisvállalat házi-pénztárának adminisztrálására. Elkészítjük a feliratokat, létrehozzuk az adatbázis-táblázatot (Beszúrás, Táblázatok, Táblázat), megadjuk a beviteli listák elemeit (Adatok, Adateszközök, Érvényesítés) és megadjuk a cella- és szám-formátumokat.
az adatbázis-táblázat előkészítése
A „felvétel” az, amikor elviszi a pénzt a kolléga, és az „elszámolás”, amikor visszahozza a maradékot és a számlát. Az egyenleg oszlop képletében tehát két műveletet kell deklarálnunk. Ha az akció felvétel, akkor az előző egyenlegből, le kell vonnunk a felvett összeget. Ha elszámolás, akkor az előző egyenleghez hozzá kell adnunk a visszahozott összeget.
Az első akció képlete azonban ettől eltérő. Ha a tulajdonos, mondjuk három-milliót tett a kasszába, akkor az első egyenleg három-millió mínusz a felvett összeg. Mivel az adatbázis-táblázat oszlopában csak egyetlen képletet határozhatunk meg, ezért az első akció egyenlegének kiszámítását is bele kell foglalnunk a képletbe! A művelet feltétele legyen a képletet tartalmazó sor száma: ha kettő, akkor legyen ez, különben meg az.
Kérjünk még egy sort és az új sor egyenleg cellájában dolgozzunk. Azért ott, hogy ne a táblázat fejlécére kelljen kattintanunk, amikor az előző egyenlegre hivatkozunk.
a HA függvénnyel elrejtendő képlet
A program, természetesen az első sorba is elhelyezi a képletet, ezért a szerkesztéshez használt sort a műveletet követően letörölhetjük, és a képletet kiegészíthetjük a rejtéssel.
az adatok nélküli képlet eredményét elrejtő HA függvény
Az <egyenleg> az előbb ismertetett képletet jelöli. Összefoglalva: az aktuális egyenleg csak akkor fog megjelenni, ha az ÉS függvény argumentumaiban szereplő cellák ki lesznek töltve.
ha függvények egymásba ágyazása
Ha azt mondanám, a HA függvény műveletek közötti választás automatizálására szolgál, akkor olyan nagyon nem lőnék mellé. Alapesetben két művelet között „választ”, egymásba ágyazottan legfeljebb hatvanöt közül.
HA függvények egymásba ágyazása
Nagyon öreg, és nagyon távolról jött emberek beszélik, hogy volt idő, amikor még kettőszáz-ötven-öt HA függvényt lehetett egymásba ágyazni. Persze! De az már nagyon régen volt! A 2019-es Excel írja is.
az Excel fihyelmeztető üzenete a HA függvény 64 beágyazási szintjére
Lefordítom ómagyarra! A beírt képletet a program nem tudja kiértékelni, mert az 64 beágyazási szintnél többet tartalmaz.
Nézzünk egy beágyazós feladatot, amelynek képletében három HA függvénnyel négy műveletet kezelünk! A hallgatók dolgozatot írtak. Az értékelés a pontszámok alapján történik: 0-tól 39-ig „értékelhetetlen”, 40-től 79-ig „kevés”, 80-tól 179-ig „megfelelt”, 180-tól „dicséretes”.
példa a HA függvény egymásba ágyazáaára
Általánosságban is megfogalmazhatjuk a HA függvény egymásba ágyazott képletét: HA( <feltétel1> ; <művelet1> ; HA( <feltétel2> ; <művelet2> ; HA( <feltétel3> ; <művelet3> … HA( <feltételn> ; <műveletn> ; <műveletn+1> )…
a ha függvény tömbös kiértékelése
A HA függvény tehát kiértékel egy logikai kifejezést és ha IGAZ eredményre jut, akkor az egyik műveletet hajtja végre, ha HAMIS-ra, akkor a másikat. Ha ezt a feltételes művelet-végzést „ha-művelet”-nek nevezzük, akkor azt mondhatjuk, hogy a tömbös kiértékelésű HA függvénnyel több ha-művelet elvégzésére utasítjuk a programot. A ha-műveletek eredményét a függvény egy tömbben adja vissza. Aki nem tudja mi az a tömb és mi az a tömbös kiértékelés, az tájékozódjon!
példa a HA függvény tömbös kiértékelésére
A képen látható példa kérdése az volt: Hány éves a hajóskapitány? Akarom mondani, a legöregebb ember, aki a szülőhelyén lakik? A HA függvénnyel ezt az utasítást adtuk a programnak: ellenőrizd soronként, azonos-e a születési hely és a lakhely, ha igen jegyezd meg ennek a sornak az életkorát! A képen alul láthatjuk a HA függvény eredmény-tömbjét. A feltételnek nem megfelelő sorok HAMIS értékeit a második művelet hiánya magyarázza.
Persze kérdezhették volna azt is, hogy ki az a legöregebb ember, aki a születési helyén lakik. És nem az emberek életkorát, hanem a születési dátumát adják meg. Akkor így alakulna a megoldás.
példa a HA függvény tömbös kiértékelésére
A legidősebb embert most a megélt napok számával határoztuk meg. Ebben a példában már deklaráltunk hamis-műveletet: ha nem azonos a születési- és a lakhely, akkor az eredmény legyen nulla. A tömbös feldolgozás most is egyetlen adatot eredményezett, de ennek ellenére nem mellőzhetjük a képletet lezáró Shift+Ctrl+Enter billentyű-parancsot! A #HIÁNYZIK hibaérték valószínűleg erre figyelmeztet.
feltétel-rendszer tömbös kiértékelésű ha függvényben
A logikai függvényeket, beleértve a NEM-et is, nem használhatjuk tömbös kiértékelésű HA függvényben. Ennek ellenére nem kell lemondanunk a függvény összetett feltételezéséről. Csak egy speciális írásmódot kell használnunk.
A logikai kifejezéseket külön-külön zárójeleznünk kell. A kifejezések között logikai AND vagy logikai OR kapcsolatot hozhatunk létre. Az előbbinek a szorzás (*), az utóbbinak az összeadás (+) a műveleti jele. A kifejezések kiértékelése balról jobbra halad. Természetesen „plusz” zárójelezéssel a végrehajtási sorrend módosítható. Nézzünk néhány példát az egyszerűből az összetett felé haladva.
példa a HA függvény tömbös kiértékelésére
A feladatunk mindhárom példában a feltétel-rendszernek eleget tévő sorok megszámlálása volt. Ezért deklaráltunk egyet (1) igaz-műveletként és nullát (0) hamis-műveletként. Majd a HA függvény eredmény-tömbjében álló számokat a SZUM-mal adtuk össze.
A második példában a 1-B2:B11 kifejezés a B2:B11=HAMIS „szinonimája”, vagy másként fogalmazva a NEM( B2:B11 ) kifejezés függvény nélküli változata. A harmadik példában szereplő MARADÉK függvény két argumentuma az osztandó és az osztó. Eredménye a két szám osztási maradéka.
Szabadság, egyenlőség, testvériség!
margitfalvi.arpad@gmail.com