torstai 4. syyskuuta 2008

Excel Tips and Tricks 5: JOSVIRHE-funktio

Excel 2007:n vakiofunktiovalikoima on laajentunut mm. siksi, että aiemmin Analyysityökaluihin (Analysis TookPak) sisältyneet funktiot ovat nyt vakiofunktioiden joukossa, eikä niiden käyttäminen enää edellytä erillisen lisäosan asentamista. Uusia ennennäkemättömiä funktioita on lisätty SQL-kyselyistä noudettavan tiedon hyödyntämistä varten. Samaten vakiofunktioihin on lisätty viisi uutta funktiota, jotka on suunniteltu ratkaisemaan joitakin melko tyypillisiä tilanteita työkirjoissa. Kyseiset funktiot ovat nimeltään JOSVIRHE (IFERROR), KESKIARVO.JOS (AVERAGEIF), KESKIARVO.JOS.JOUKKO (AVERAGEIFS), LASKE.JOS.JOUKKO (COUNTIFS) ja SUMMA.JOS.JOUKKO (SUMIFS). Niiden toteuttamat asiat on voitu tehdä ennenkin, mutta on pitänyt kirjoittaa huomattavasti nykyistä monimutkaisempi kaava. Ja mitä pidempi kaava, sitä enemmän mahdollisia paikkoja virheille! Esittelen seuraavissa postauksissa nämä 5 funktiota aloittaen ihan aakkosjärjestyksessä loogisten funktioiden luokkaan kuuluvasta JOSVIRHE-funktiosta.

Funktio käsittelee tyypillisten kaavavirheiden palauttamaa tietoa, joka näkyy taulukossa merkintöinä kuten #JAKO/0!(#DIV/0!), #NIMI?(#NAME?) jne. Funktion avulla virheilmoitukset voidaan muuttaa selkokielelle.

Oletetaan, että taulukossa on esimerkiksi kaava =PHAKU(A2;$M$2:$R$80;2;EPÄTOSI), jonka on tarkoitus hakea asiakkaan, yhdistyksen jäsenen tms. yhteystiedot alueelta M2:R80 kun A-sarakkeessa olevaan soluun kirjoitetaan nimi. Jos nimeä kirjoitettaessa tehdään virhe tai kirjoitetaan luettelosta puuttuva nimi, saadaan näkyviin rohkaiseva #PUUTTUU (#N/A!). Täydennetään edellä olevaa kaavaa JOSVIRHE-funktiolla seuraavasti:
=JOSVIRHE(PHAKU(A2;$M$2:$R$80;2;EPÄTOSI);"Nimessä on kirjoitusvirhe tai se puuttuu luettelosta!").

Kaava tuottaa hieman helpommin ymmärrettävän virheilmoituksen. Huomaa lainausmerkit, joita tarvitaan aina kun funktion halutaan palauttavan tekstiä taulukkoon.

Miten vastaava sitten toteutettiin vanhemmissa Excel-versioissa? Tarvittiin kaava:
=JOS(ONPUUTTUU(PHAKU(A2;$M$2:$R$80;2;EPÄTOSI));"Nimessä on kirjoitusvirhe tai se puuttuu listasta!";PHAKU(A2;$M$2:$R$80;2;EPÄTOSI)).

Sisäkkäisiä funktioita ja hirvittävästi sulkuja – monta mahdollista paikkaa tehdä virhe.

6 kommenttia:

L kirjoitti...

Kiitos tästä viimeisestä esimerkistä! Meinasin jo olla pulassa 2003:n kanssa mutta tämä pelasti päiväni :)

Outi kirjoitti...

Kiva jos näistä on apua.

Mediaman kirjoitti...

Loistavaa. Tämä tuli tarpeeseen. Pitkään miettinyt miten kiertää ongelma 2003:sessa.

Outi kirjoitti...

Hassua, olet jo toinen 2003-version käyttäjä, joka on tuskaillut tämän jutun kanssa :) Hyvä siis, että tulin laittaneeksi mukaan vanhempaakin versiota koskevan vinkin.

Anonyymi kirjoitti...

Vinkkisi tuottaa näköjään iloa vielä vuonna 2012:stakin... kitoosh.

Outi kirjoitti...

Jotkut asiat ovat suhteellisen pysyviä :)