|
|||||
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.
|
|||||
![]() |
|||||
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ő.
|
|||||
![]() |
|||||
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ó!
|
|||||
![]() |
|||||
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.
|
|||||
![]() |
|||||
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ű.
|
|||||
![]() |
|||||
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!
|
|||||
![]() |
|||||
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:
|
|||||
![]() |
|||||
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.
|
|||||
![]() |
|||||
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 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 <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.
|
|||||
![]() |
|||||
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.
|
|||||
![]() |
|||||
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”.
|
|||||
![]() |
|||||
Á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!
|
|||||
![]() |
|||||
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.
|
|||||
![]() |
|||||
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.
|
|||||
![]() |
|||||
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!
|
|||||
![]() |
|||||
|
|||||
|