Hoofdstuk 17: Logische & Informatiefuncties en operatoren 17.0 Inleiding Logische formules testen of een conditie waar is (het resultaat van de formule zal dan de waarde WAAR hebben) of onwaar (in dit geval is het resultaat ONWAAR). Ze kunnen gebruikt worden om vragen te beantwoorden zoals:
Zijn de verkoopcijfers van deze maand hoger of lager dan die van vorige maand? Is de som van de Europese bevolkingscijfers gelijk aan het totaal van de Europese populatie in de statistische gegevens die ik gekregen heb? Was dit product aangewezen om uit de productie gehaald te worden stop en werden er minder dan 1000 stuks van verkocht het afgelopen jaar?
17.1 Logische operatoren ( =, <, >, <=, >=, <>) Excel kan waarden vergelijken door middel van een operator: of waarden gelijk zijn aan elkaar of één is groter dan de ander. Een formule die één van de tekens uit de paragraaf titel bevat, zal of waar of onwaar zijn. Als je bijvoorbeeld invoert: =1<4 in een cel, dan zal de waarde die getoond wordt WAAR zijn. Aan de andere kant zal =4<1 ONWAAR zijn. Je kunt deze vergelijkingen toepassen op echte gegevens en in plaats van getallen kun je celverwijzingen gebruiken (zie hoofdstuk 11: Celverwijzingen). Bekijk de volgende tabel van ‘s werelds best verkochte singles ooit:
© 2010 Excel with Business
1
Hoofdstuk 17: Logische & Informatiefuncties
Stel dat je alle singles wil selecteren die in of na 1970 gemaakt werden. Als je dan in cel H2 dit typt en deze formule kopieert naar het einde van het bereik: =D2>=1970 dan zal dit “WAAR” produceren voor alle singles waarvan de waarde in kolom D groter is of gelijk aan 1970:
De twee tekens samen, >=, betekenen ‘groter dan of gelijk aan’. De andere vergelijkingstekens werken op dezelfde manier:
© 2010 Excel with Business
2
Hoofdstuk 17: Logische & Informatiefuncties
= > < >= <= <>
gelijk aan groter dan kleiner dan groter dan of gelijk aan kleiner dan of gelijk aan niet gelijk aan
Een handige (maar wat complexere) toepassing van deze vergelijkingstekens is het vergelijken van de waarden in één rij met de waarden in de volgende rij. Zo kun je zien of een cel herhaald wordt in een geselecteerde tabel. In de tabel hieronder zijn de gegevens gesorteerd (zie hoofdstuk 13: Sorteren en Filteren) per artiest. Stel dat je de artiesten wilt zien die twee keer in deze lijst voorkomen. Met de volgende formule kun je vergelijken of opeenvolgende cellen in kolom B aan elkaar gelijk zijn: =B2=B3 Dus als een artiestennaam niet gelijk is aan de naam in de cel daaronder, dan zal er ONWAAR verschijnen in kolom I en als de naam hetzelfde is, dan zal er WAAR staan:
Dit laat zien dat de Beatles en Bing Crosby elk meer dan één single hebben in deze lijst. Deze soort techniek kan een handige manier zijn om dubbele waarden op te sporen om deze te verwijderen uit de gegevens of een manier om veranderingen in categorie te maken in grote gegevensbestanden.
© 2010 Excel with Business
3
Hoofdstuk 17: Logische & Informatiefuncties
17.2 EN, OF De EN functie geeft WAAR weer als alle argumenten waar zijn en anders is het resultaat ONWAAR. De OF functie geeft WAAR aan als één van de argumenten waar is, in dat geval is het resultaat alleen ONWAAR alle argumenten onwaar zijn. Stel je wilt weten welke singles zowel van het Pop-genre zijn en uitgegeven zijn sinds 1970. Voer dan in en kopieer door naar het einde van het bereik: =EN(D2>=1970;E2=”Pop”)
met als resultaat:
De OF functie gebruikt dezelfde syntaxis als de EN functie (bijvoorbeeld OF(D2>=1970;E2=”Pop”) en het resultaat is WAAR voor alle singles uitgegeven sinds 1970 plus voor alle Popnummers. Voor elke functie kun je maximaal 255 condities specificeren.
© 2010 Excel with Business
4
De volgende stap in bovenstaande analyse zou het gebruik van voorwaardelijke opmaak kunnen zijn (zie hoofdstuk 29), zodat de ‘WAAR’ waarden in kolom I geaccentueerd kunnen worden.
Hoofdstuk 17: Logische & Informatiefuncties
17.3 ISGETAL en ISFOUT ISGETAL geeft WAAR aan als een cel waarnaar verwezen wordt een getal is en ONWAAR als dat niet zo is: =ISGETAL(A2) Dus wanneer dit wordt toepast op de tabel in de eerste rij gegevens, dan geeft dit:
Het resultaat is WAAR voor “21”, “1976” en “37” omdat dit getallen zijn en ONWAAR voor “ABBA”, “Fernando” en “Pop” omdat deze waarden geen getallen zijn. ISFOUT werkt op dezelfde manier en geeft WAAR aan voor elke Excel foutwaarde (bijvoorbeeld #N/B, #WAARDE!, #VERW!, #DEEL/0!, #GETAL!, #NAAM? Of #LEEG). ISFOUT kan goed gecombineerd worden met ALS om foutwaarden te verbergen (zie hieronder).
17.4 ALS EN, OF en de vergelijkingstekens zijn beperkt tot de resultaten “WAAR” of “ONWAAR”. Echter, het resultaat kan veel interessanter zijn als je het kan aanpassen. Met de ALS functie kun je aangeven welke waarden in een cel moet komen staan om de conditie waar of onwaar te laten zijn. Stel dat je in het voorbeeld hierboven een kolom wilt hebben met het jaartal van uitbrengen vanaf 1970 en het overige classificeert als “oud”. Pas dan deze formule toe: =ALS(D2>=1970;D2;"Oud") waarbij de syntaxis is: =ALS(
;;) Om dit resultaat te bereiken (vergeet niet de functie over de kolom te kopiëren):
© 2010 Excel with Business
5
Hoofdstuk 17: Logische & Informatiefuncties
De voorwaarde kan van alles zijn, bijvoorbeeld:
de verkoop in Engeland minder dan 3 miljoen (G2<3000000) de verkoop wereldwijd tussen de 10 en de 15 miljoen (EN(F2>10000000;F2<15000000) de artiestennamen met meer dan 12 tekens LENGTE(B2)>12
Of combinaties van deze voorwaardes, gebruikmakend van de EN/ OF functies. De ALS functie kan gecombineerd worden met functies die tekst in cellen doorzoeken om bepaalde gegevens te vinden en te markeren in een gegevensbestand zodat het op een meer geavanceerde manier kan werken. Stel, je wilt een kolom toevoegen met de kop “Love song” voor elke titel waarin het woord “love” voorkomt en “Anders” voor als dat niet zo is. Gebruik dan eerst de VINDEN.ALLES functie (zie hoofdstuk 15: Tekstfuncties) om vast te stellen of “Love” in de titel van de single voorkomt: =VIND.ALLES(“Love”;C2) (onthoudt dat deze functie hoofdlettergevoelig is) wat het volgende zal geven1:
Daarna gebruik je de ALS functie om de gevraagde waarden te krijgen door in J2 in te typen:
1
De VINDEN.ALLES functie zoekt naar de tekst Love in de cel en wanneer deze aanwezig is, zal het de positie van de tekst in de cel aanduiden – bv. bij 4 als resultaat zou dit betekenen dat Love voorkomt vanaf het vierde teken in de titel van de single. Als de tekst niet aanwezig is, dan zal VINDEN.ALLES resulteren in de fout #WAARDE!.
© 2010 Excel with Business
6
Hoofdstuk 17: Logische & Informatiefuncties
=ALS(ISGETAL(I2);“Love song”;”Anders”) wat als resultaat geeft:
De nummers van Whitney Houston en Barbara Streisand zullen aangeduid worden met “Love song”. Merk op dat de ALS-ISGETAL combinatie hier gebruikt is om te zoeken naar een getal. Je kunt ook zoeken naar een FOUT bijvoorbeeld: =ALS(ISFOUT(I2);"Er is een probleem";"") De "" betekent dat de cel leeg zal zijn als de ALS voorwaarde waar is).
17.5 Geneste logische functies De ALS functie biedt je de mogelijkheid om een automatische keuze op te zetten tussen twee waarden – één waarde zal verschijnen wanneer de voorwaarde in de ALS functie WAAR is, de andere waarde zal het ONWAAR is. Geneste logische functies worden gebruikt wanneer je de functie wil laten kiezen tussen meer dan twee resultaatwaarden. Stel dat je alle muziek wil classificeren als of “voor de jaren 70”, of “jaren 70” of “na de jaren 70”. Dan gebruik je de ALS functie binnen een ALS functie (vandaar de term “genest”) zoals volgt: =ALS(D2<1970;"Voor de jaren 70";ALS(D2<1980;"jaren 70";"Na de jaren 70"))
© 2010 Excel with Business
7
Hoofdstuk 17: Logische & Informatiefuncties
Dit is een stuk minder intimiderend wanneer je de formule zelf uitschrijft. Deze geneste formule geeft als resultaat:
Wanneer je meer dan drie niveaus nest, dan kan dit verwarrend werken. Er bestaat vaak een betere manier om te bereiken wat je wilt, mogelijk door een zoek functie als alternatief te gebruiken.
© 2010 Excel with Business
8
Hoofdstuk 17: Logische & Informatiefuncties