{"id":20689,"date":"2026-02-07T06:29:08","date_gmt":"2026-02-07T06:29:08","guid":{"rendered":"https:\/\/fundsnetservices.com\/fi\/?page_id=20689"},"modified":"2026-02-07T06:29:08","modified_gmt":"2026-02-07T06:29:08","slug":"kaavat-ja-funktiot","status":"publish","type":"page","link":"https:\/\/fundsnetservices.com\/fi\/excel\/kaavat-ja-funktiot\/","title":{"rendered":"Excel-kaavat ja funktiot"},"content":{"rendered":"<p data-pm-slice=\"1 1 []\">Excel formulas and functions are your everyday superpower. They turn plain spreadsheets into powerful calculation tools, automate repetitive tasks, and reveal insights you\u2019d never catch at a glance. In this guide, we\u2019ll walk through the most essential groups of functions\u2014from quick, basic fixes to smart lookup formulas and flexible, dynamic calculations. You\u2019ll follow practical, real-world examples, learn how to avoid common errors (#N\/A, #VALUE!), and collect a toolkit of ready-to-use shortcuts. The aim is simple: by the time you finish reading, you\u2019ll know how to quickly choose the right function, write clear, readable formulas, and troubleshoot issues with confidence. For more topics, tips, and step-by-step tutorials, head over to our complete Excel guides and tips overview page.<\/p>\n<p>Excel-kaavat ja funktiot ovat perusta, jonka varaan luotettavat raportit, budjetit ja analyysit rakennetaan. Kun hallitsemme muutaman ydinfunktion ja ymm\u00e4rr\u00e4mme viittausten toiminnan, 80 % arjen haasteista ratkeaa minuuteissa.<\/p>\n<p>Muutama iso muutos viime vuosilta on hyv\u00e4 tiedostaa:<\/p>\n<ul class=\"list-disc list-outside leading-3 -mt-2 marker:text-inherit\">\n<li class=\"leading-normal -mb-2\">Dynaamiset matriisit (Excel 365): funktiot kuten <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">FILTER<\/code>, <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">UNIQUE<\/code> ja <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">SORT<\/code> &#8220;l\u00e4ik\u00e4ht\u00e4v\u00e4t&#8221; automaattisesti viereisiin soluihin. T\u00e4m\u00e4 poistaa vanhan ajan Ctrl+Shift+Enter -taikatempun.<\/li>\n<li class=\"leading-normal -mb-2\"><code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">XLOOKUP<\/code> korvaa k\u00e4yt\u00e4nn\u00f6ss\u00e4 <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">VLOOKUP<\/code>: joustavampi, turvallisempi, helpompi lukea.<\/li>\n<li class=\"leading-normal -mb-2\"><code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">LET<\/code> ja <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">LAMBDA<\/code> tekev\u00e4t kaavoista modulaarisia ja ymm\u00e4rrett\u00e4vi\u00e4. Ne ovat kuin pieni\u00e4 muistiinpanorivej\u00e4 ja omia funktioita suoraan ty\u00f6kirjaan.<\/li>\n<\/ul>\n<p>T\u00e4ss\u00e4 artikkelissa keskitymme k\u00e4yt\u00e4nn\u00f6nl\u00e4heisiin ratkaisuihin. N\u00e4yt\u00e4mme kaavoja sellaisina kuin niit\u00e4 oikeasti k\u00e4yt\u00e4mme \u2013 napakoina, luettavina ja testattavina. Ja kyll\u00e4: lis\u00e4\u00e4mme muutaman ammattilaisvinkin, joilla v\u00e4lt\u00e4mme turhan v\u00e4\u00e4nn\u00f6n jo ennalta.<\/p>\n<h2 id=\"cvxrW7EIyYZJgc4twMDYC\" data-level=\"2\">Yleisimm\u00e4t funktiot (nopeat ratkaisut)<\/h2>\n<p>Aloitetaan niist\u00e4, jotka pelastavat p\u00e4ivitt\u00e4in. Kun n\u00e4m\u00e4 ovat selk\u00e4ytimess\u00e4, ty\u00f6 nopeutuu heti.<\/p>\n<h3 id=\"CtHxxAlOgvs8ZDiThzsqZ\" data-level=\"3\">Summa, keskiarvo ja laskenta<\/h3>\n<ul class=\"list-disc list-outside leading-3 -mt-2 marker:text-inherit\">\n<li class=\"leading-normal -mb-2\"><code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">SUM<\/code>: lis\u00e4\u00e4 nopeasti alueen arvot. Esim. <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">=SUM(B2:B100)<\/code>.<\/li>\n<li class=\"leading-normal -mb-2\"><code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">AVERAGE<\/code>: perus-keskiarvo, mutta muista puhdistaa nollat tai tyhj\u00e4t tarvittaessa (katso <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">AVERAGEIF<\/code>).<\/li>\n<li class=\"leading-normal -mb-2\"><code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">COUNT<\/code> (lukujen m\u00e4\u00e4r\u00e4), <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">COUNTA<\/code> (ei-tyhjien m\u00e4\u00e4r\u00e4) ja <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">COUNTBLANK<\/code> (tyhjien m\u00e4\u00e4r\u00e4). Yhdist\u00e4m\u00e4ll\u00e4 n\u00e4ihin ehdot saamme kontrollin dataan.<\/li>\n<\/ul>\n<h3 id=\"CtHxxAlOgvs8ZDiThzsqZ\" data-level=\"3\">Ehdot mukaan<\/h3>\n<ul class=\"list-disc list-outside leading-3 -mt-2 marker:text-inherit\">\n<li class=\"leading-normal -mb-2\"><code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">SUMIF<\/code> ja <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">SUMIFS<\/code>: lis\u00e4\u00e4v\u00e4t vain ehdon t\u00e4ytt\u00e4v\u00e4t rivit. Esim. myynnit tietylt\u00e4 alueelta <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">=SUMIFS(C:C,A:A,\"Helsinki\",B:B,\"&gt;=2025-01-01\")<\/code>.<\/li>\n<li class=\"leading-normal -mb-2\"><code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">AVERAGEIF(S)<\/code>: sama logiikka keskiarvoihin.<\/li>\n<li class=\"leading-normal -mb-2\"><code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">COUNTIF(S)<\/code>: kuinka monta rivi\u00e4 t\u00e4ytt\u00e4\u00e4 ehdon.<\/li>\n<\/ul>\n<p>K\u00e4yt\u00e4nn\u00f6n vinkki: Pid\u00e4 data Excel-taulukkona (Ctrl+T). T\u00e4ll\u00f6in kaavoista tulee luettavia: <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">=SUMIFS(Taulukko[Myynti],Taulukko[Kaupunki],\"Helsinki\")<\/code> eik\u00e4 sinun tarvitse murehtia alueen laajentumisesta.<\/p>\n<h3 id=\"CtHxxAlOgvs8ZDiThzsqZ\" data-level=\"3\">Nopea lajittelu ja suodatus ilman painikkeita<\/h3>\n<ul class=\"list-disc list-outside leading-3 -mt-2 marker:text-inherit\">\n<li class=\"leading-normal -mb-2\"><code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">SORT<\/code> j\u00e4rjest\u00e4\u00e4 ilman nauhan komentoja: <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">=SORT(A2:C100,3,-1)<\/code> lajittelee kolmannen sarakkeen mukaan laskevaan.<\/li>\n<li class=\"leading-normal -mb-2\"><code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">FILTER<\/code> tuo n\u00e4kyviin vain ehdot t\u00e4ytt\u00e4v\u00e4t rivit: <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">=FILTER(A2:C100,B2:B100=\"Helsinki\")<\/code>.<\/li>\n<li class=\"leading-normal -mb-2\"><code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">UNIQUE<\/code> listaa yksil\u00f6lliset arvot, loistava arvolistoihin ja valintoihin.<\/li>\n<\/ul>\n<h3 id=\"CtHxxAlOgvs8ZDiThzsqZ\" data-level=\"3\">Pikalaskut p\u00e4iv\u00e4m\u00e4\u00e4riin ja aikoihin<\/h3>\n<ul class=\"list-disc list-outside leading-3 -mt-2 marker:text-inherit\">\n<li class=\"leading-normal -mb-2\"><code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">TODAY()<\/code> ja <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">NOW()<\/code> p\u00e4ivittyv\u00e4t automaattisesti: loistavia &#8220;t\u00e4n\u00e4\u00e4n&#8221; -raportteihin.<\/li>\n<li class=\"leading-normal -mb-2\"><code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">EOMONTH<\/code> l\u00f6yt\u00e4\u00e4 kuukauden viimeisen p\u00e4iv\u00e4n: <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">=EOMONTH(TODAY(),-1)<\/code> edellisen kuun loppuun.<\/li>\n<\/ul>\n<h3 id=\"CtHxxAlOgvs8ZDiThzsqZ\" data-level=\"3\">Rakennetaan luettavia kaavoja<\/h3>\n<ul class=\"list-disc list-outside leading-3 -mt-2 marker:text-inherit\">\n<li class=\"leading-normal -mb-2\"><code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">LET<\/code> nime\u00e4\u00e4 v\u00e4litulokset: <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">=LET(rivi,FILTER(A2:C100,B2:B100=\"Helsinki\"), SUM(INDEX(rivi,,3)))<\/code> \u2013 ensin suodatamme, sitten summataan kolmas sarake. Helppo lukea, helppo debugata.<\/li>\n<\/ul>\n<p>Pro-vinkki: Kun emme ole varmoja, k\u00e4yt\u00e4mme Kaavan arviointi -toimintoa (Kaavat &gt; Kaavan arviointi). N\u00e4emme vaihe vaiheelta, miten Excel laskee tuloksen.<br \/>\nJos data tulee CSV:st\u00e4 tai tarvitsee siivousta ennen kaavoja, aloita sivulta <a href=\"https:\/\/fundsnetservices.com\/fi\/excel\/datan-kasittely-excelissa\/\"><strong data-start=\"4760\" data-end=\"4789\">Datan k\u00e4sittely Exceliss\u00e4<\/strong>.<\/a><\/p>\n<h2 id=\"zXpnbgsYCW08LR9jNIEdA\" data-level=\"2\">Hakufunktiot ja viittaukset<\/h2>\n<p>Hakufunktiot ovat Excelin &#8220;GPS&#8221;. Ne etsiv\u00e4t oikean arvon datap\u00f6yd\u00e4st\u00e4 ilman manuaalista selaamista.<\/p>\n<h3 id=\"CtHxxAlOgvs8ZDiThzsqZ\" data-level=\"3\">XLOOKUP ja VLOOKUP \u2013 miksi vaihtaa?<\/h3>\n<ul class=\"list-disc list-outside leading-3 -mt-2 marker:text-inherit\">\n<li class=\"leading-normal -mb-2\"><code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">XLOOKUP(haettava, hakujoukko, palautusjoukko, [jos_ei_l\u00f6ydy], [match], [search])<\/code> on moderni, turvallinen ja joustava. Se osaa hakea vasemmalle, oikealle, yl\u00f6s tai alas, eik\u00e4 sarakeindeksi\u00e4 tarvitse laskea.<\/li>\n<li class=\"leading-normal -mb-2\">Esimerkki: <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">=XLOOKUP(E2, Taulukko[Tuotekoodi], Taulukko[Hinta], \"Ei l\u00f6ydy\")<\/code>.<\/li>\n<li class=\"leading-normal -mb-2\"><code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">VLOOKUP<\/code> toimii edelleen, mutta on rajallinen: se hakee vain vasemmalta oikealle ja hajoaa, jos sarakej\u00e4rjestys muuttuu. Siksi suosimme <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">XLOOKUP<\/code>ia aina kun mahdollista.<\/li>\n<\/ul>\n<h3 id=\"CtHxxAlOgvs8ZDiThzsqZ\" data-level=\"3\">INDEX + MATCH (tai XMATCH) \u2013 klassikko, joka el\u00e4\u00e4<\/h3>\n<ul class=\"list-disc list-outside leading-3 -mt-2 marker:text-inherit\">\n<li class=\"leading-normal -mb-2\"><code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">INDEX(alue, rivi: [sarake])<\/code> palauttaa arvon tietyss\u00e4 kohdassa.<\/li>\n<li class=\"leading-normal -mb-2\"><code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">MATCH(hakuarvo, hakujoukko, [match-tyyppi])<\/code> etsii sijoituksen.<\/li>\n<li class=\"leading-normal -mb-2\">Yhdess\u00e4: <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">=INDEX(C:C, MATCH(E2, A:A, 0))<\/code> hakee hinnan koodin perusteella.<\/li>\n<li class=\"leading-normal -mb-2\"><code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">XMATCH<\/code> on uudempi versio, joka tukee hakusuuntaa ja binaireja hakuja selke\u00e4mmin.<\/li>\n<\/ul>\n<p>Milloin <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">INDEX\/MATCH<\/code> edelleen kannattaa? Kun haluamme \u00e4\u00e4rimm\u00e4ist\u00e4 suorituskyky\u00e4 isoissa tiedostoissa tai tehd\u00e4 monimutkaisia 2D-hakuja yhdist\u00e4m\u00e4ll\u00e4 rivi- ja sarakehakua (esim. <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">INDEX(data, MATCH(kriteeri, rivit, 0), MATCH(kolumni, sarakkeet, 0))<\/code>).<\/p>\n<h3 id=\"CtHxxAlOgvs8ZDiThzsqZ\" data-level=\"3\">Dynaamiset haut riveitt\u00e4in ja useilla ehdoilla<\/h3>\n<ul class=\"list-disc list-outside leading-3 -mt-2 marker:text-inherit\">\n<li class=\"leading-normal -mb-2\">Moniehtoinen haku <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">XLOOKUP<\/code>illa: yhdistet\u00e4\u00e4n ehdot avain-sarakkeeksi.<\/li>\n<li class=\"leading-normal -mb-2\">Esim. apusarakkeessa `=A2&amp;&#8221;<\/li>\n<\/ul>\n<p>|&#8221;&amp;B2<code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">, ja haku <\/code>=XLOOKUP(E2&amp;&#8221;|<\/p>\n<p>&#8220;&amp;F2, apuSarake, Palautus)`.<\/p>\n<ul class=\"list-disc list-outside leading-3 -mt-2 marker:text-inherit\">\n<li class=\"leading-normal -mb-2\">Ilman apusaraketta: dynaaminen suodatus <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">FILTER<\/code>illa ja tarvittaessa viimeinen arvo <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">@INDEX<\/code> tai <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">TAKE<\/code>\/<code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">DROP<\/code>:<\/li>\n<li class=\"leading-normal -mb-2\"><code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">=INDEX(FILTER(Taulukko[Hinta],(Taulukko[Koodi]=E2)*(Taulukko[Alue]=F2)),1)<\/code>.<\/li>\n<\/ul>\n<h3 id=\"CtHxxAlOgvs8ZDiThzsqZ\" data-level=\"3\">Viittaukset, alueet ja nimialueet<\/h3>\n<ul class=\"list-disc list-outside leading-3 -mt-2 marker:text-inherit\">\n<li class=\"leading-normal -mb-2\">Absoluuttinen vs. suhteellinen viittaus: <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">$A$2<\/code> ei muutu kopioitaessa, <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">A2<\/code> muuttuu. Pikan\u00e4pp\u00e4in F4.<\/li>\n<li class=\"leading-normal -mb-2\">Nimetyt alueet: Kaavat &gt; Nimiruutu. K\u00e4ytt\u00f6: <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">=SUM(Myynnit)<\/code> \u2013 lis\u00e4\u00e4 luettavuutta ja v\u00e4hent\u00e4\u00e4 virheit\u00e4.<\/li>\n<li class=\"leading-normal -mb-2\">Excel-taulukot (Ctrl+T) ja rakenteelliset viittaukset: <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">Taulukko[Myynti]<\/code> skaalautuu automaattisesti uusiin riveihin.<\/li>\n<\/ul>\n<h3 id=\"CtHxxAlOgvs8ZDiThzsqZ\" data-level=\"3\">Erikoistapaukset: INDIRECT ja OFFSET \u2013 varoen<\/h3>\n<ul class=\"list-disc list-outside leading-3 -mt-2 marker:text-inherit\">\n<li class=\"leading-normal -mb-2\"><code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">INDIRECT<\/code> muuntaa tekstin viittaukseksi: hy\u00f6dyllinen koontin\u00e4kymiss\u00e4, mutta tekee kaavoista haihtuvia (volatile) ja suorituskyky k\u00e4rsii. K\u00e4ytet\u00e4\u00e4n harkiten.<\/li>\n<li class=\"leading-normal -mb-2\"><code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">OFFSET<\/code> siirt\u00e4\u00e4 viittausta suhteessa ankkuriin. Sama varoitus: haihtuva. Mieluummin <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">INDEX<\/code> dynaamisessa alueessa, esim. <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">=SUM(INDEX(C:C,2):INDEX(C:C,MATCH(\"zzz\",A:A)))<\/code>.<\/li>\n<\/ul>\n<h2 id=\"NiNIqWzmRR5PohKxXiOXJ\" data-level=\"2\">\u00a0Laskenta ja ehdollinen logiikka<\/h2>\n<p>Ehdollinen logiikka on se liima, joka erottaa raportin \u00e4lytaulukosta.<\/p>\n<h3 id=\"CtHxxAlOgvs8ZDiThzsqZ\" data-level=\"3\">IF, IFS ja SWITCH<\/h3>\n<ul class=\"list-disc list-outside leading-3 -mt-2 marker:text-inherit\">\n<li class=\"leading-normal -mb-2\"><code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">IF(ehto, jos_tosi, [jos_ep\u00e4tosi])<\/code> on peruspalikka. Pid\u00e4mme kaavat lyhyin\u00e4 \u2013 jos sis\u00e4kk\u00e4isi\u00e4 <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">IF<\/code>-ehtoja on yli 2\u20133, hajotamme logiikan tai k\u00e4yt\u00e4mme <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">IFS<\/code>.<\/li>\n<li class=\"leading-normal -mb-2\"><code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">IFS(ehto1, tulos1, ehto2, tulos2, \u2026)<\/code> lukee luonnollisemmin useita ehtoja.<\/li>\n<li class=\"leading-normal -mb-2\"><code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">SWITCH(lauseke, arvo1, tulos1, arvo2, tulos2, [oletus])<\/code> toimii luokittelussa, kun vertaillaan yhteen muuttujaan.<\/li>\n<\/ul>\n<p>Esimerkki luokittelusta:<\/p>\n<p><code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">=IFS(pisteet&gt;=90,\"Erinomainen\",pisteet&gt;=75,\"Hyv\u00e4\",pisteet&gt;=60,\"Tyydytt\u00e4v\u00e4\",TRUE,\"Kehitett\u00e4v\u00e4\u00e4\")<\/code><\/p>\n<h3 id=\"CtHxxAlOgvs8ZDiThzsqZ\" data-level=\"3\">AND, OR, NOT \u2013 yhdistelyyn<\/h3>\n<ul class=\"list-disc list-outside leading-3 -mt-2 marker:text-inherit\">\n<li class=\"leading-normal -mb-2\"><code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">AND<\/code> ja <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">OR<\/code> rakentavat selkeit\u00e4 ehtoja: <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">=IF(AND(A2&gt;0,B2&lt;&gt;\"\"),\"Ok\",\"Tarkista\")<\/code>.<\/li>\n<li class=\"leading-normal -mb-2\"><code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">NOT<\/code> k\u00e4\u00e4nt\u00e4\u00e4 ehdon: hy\u00f6dyllinen &#8220;ei kuulu t\u00e4h\u00e4n&#8221; -tapauksissa.<\/li>\n<\/ul>\n<h3 id=\"CtHxxAlOgvs8ZDiThzsqZ\" data-level=\"3\">Summat ja laskennat ehdoilla<\/h3>\n<ul class=\"list-disc list-outside leading-3 -mt-2 marker:text-inherit\">\n<li class=\"leading-normal -mb-2\"><code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">SUMIFS<\/code>, <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">COUNTIFS<\/code>, <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">AVERAGEIFS<\/code> ovat raportoinnin peruskolmikko.<\/li>\n<li class=\"leading-normal -mb-2\">Monimutkaiset ehdot (esim. sis\u00e4lt\u00e4\u00e4 tekstin, v\u00e4lilt\u00e4-arvot, p\u00e4iv\u00e4m\u00e4\u00e4r\u00e4ikkunat) onnistuvat yhdist\u00e4m\u00e4ll\u00e4 vertailuoperaattoreita ja jokerimerkkej\u00e4: <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">\"*teksti*\"<\/code>, <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">\"&gt;=\"&amp;AlkuPvm<\/code>.<\/li>\n<\/ul>\n<h3 id=\"CtHxxAlOgvs8ZDiThzsqZ\" data-level=\"3\">Matriisilogiikka dynaamisissa funktioissa<\/h3>\n<ul class=\"list-disc list-outside leading-3 -mt-2 marker:text-inherit\">\n<li class=\"leading-normal -mb-2\">Dynaamisissa kaavoissa ehdot kerrotaan toisiinsa (TRUE=1, FALSE=0):<\/li>\n<li class=\"leading-normal -mb-2\"><code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">=SUM(FILTER(Taulukko[Summa],(Taulukko[Alue]=\"Etel\u00e4\")*(Taulukko[Kuukausi]&gt;=Alku)*(Taulukko[Kuukausi]&lt;=Loppu)))<\/code>.<\/li>\n<li class=\"leading-normal -mb-2\">Vaihtoehtoisesti <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">SUMPRODUCT<\/code> toimii my\u00f6s ilman dynaamisia toimintoja: <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">=SUMPRODUCT((Alue=\"Etel\u00e4\")*(Kuukausi&gt;=Alku)*(Kuukausi&lt;=Loppu)*Summa)<\/code>.<\/li>\n<\/ul>\n<h3 id=\"CtHxxAlOgvs8ZDiThzsqZ\" data-level=\"3\">Lukituksen ja validoinnin perusajatus<\/h3>\n<ul class=\"list-disc list-outside leading-3 -mt-2 marker:text-inherit\">\n<li class=\"leading-normal -mb-2\">Suojaa logiikka: lukitse kaavasarakkeet ja pid\u00e4 sy\u00f6t\u00f6t omissa soluissaan, mieluiten v\u00e4rikoodilla. Datan validointi (esim. alasvetolistat <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">UNIQUE<\/code>-arvoista) v\u00e4hent\u00e4\u00e4 virheit\u00e4 heti.<\/li>\n<\/ul>\n<p>Pro-vinkki: Kokoa luokittelun s\u00e4\u00e4nn\u00f6t pieneen &#8220;m\u00e4pp\u00e4ystaulukkoon&#8221; ja k\u00e4yt\u00e4 <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">XLOOKUP<\/code>ia. Kun s\u00e4\u00e4nn\u00f6t muuttuvat, kaavoihin ei tarvitse koskea.<\/p>\n<h2 id=\"W-S-RbNkp0r-Pwo--jLrJ\" data-level=\"2\">P\u00e4iv\u00e4m\u00e4\u00e4r\u00e4-, teksti- ja muotoilufunktiot<\/h2>\n<p>P\u00e4iv\u00e4m\u00e4\u00e4r\u00e4t ja teksti ovat raportoinnin ty\u00f6materiaalia. Kun hallitsemme muotoilun, saamme yhdenmukaiset, luettavat taulukot.<\/p>\n<h3 id=\"CtHxxAlOgvs8ZDiThzsqZ\" data-level=\"3\">P\u00e4iv\u00e4m\u00e4\u00e4r\u00e4t ja ty\u00f6p\u00e4iv\u00e4t<\/h3>\n<ul class=\"list-disc list-outside leading-3 -mt-2 marker:text-inherit\">\n<li class=\"leading-normal -mb-2\"><code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">DATE(vuosi,kk,p\u00e4iv\u00e4)<\/code>, <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">EDATE(alku, kk_siirto)<\/code> ja <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">EOMONTH<\/code> hoitavat laskennan kuukausitasolla.<\/li>\n<li class=\"leading-normal -mb-2\">Ty\u00f6p\u00e4iv\u00e4t: <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">WORKDAY<\/code> ja <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">NETWORKDAYS<\/code> (sek\u00e4 <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">.INTL<\/code>-versiot) ottavat huomioon viikonloput ja pyh\u00e4t. Esim. <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">=NETWORKDAYS.INTL(Alku,Loppu,\"0000011\",Pyh\u00e4Lista)<\/code> jos viikonloppu on vain su.<\/li>\n<li class=\"leading-normal -mb-2\">Kuukauden tai viikon numero: <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">MONTH<\/code>, <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">YEAR<\/code>, <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">WEEKNUM<\/code> (asetus: viikon aloitusp\u00e4iv\u00e4).<\/li>\n<\/ul>\n<h3 id=\"CtHxxAlOgvs8ZDiThzsqZ\" data-level=\"3\">Tekstin k\u00e4sittely \u2013 uudet ty\u00f6kalut nopeuttavat<\/h3>\n<ul class=\"list-disc list-outside leading-3 -mt-2 marker:text-inherit\">\n<li class=\"leading-normal -mb-2\">Perinteiset: <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">LEFT<\/code>, <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">RIGHT<\/code>, <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">MID<\/code>, <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">LEN<\/code>, <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">FIND<\/code>\/<code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">SEARCH<\/code>, <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">TRIM<\/code>, <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">CLEAN<\/code>.<\/li>\n<li class=\"leading-normal -mb-2\">Modernit avustajat: <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">TEXTSPLIT<\/code>, <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">TEXTBEFORE<\/code>, <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">TEXTAFTER<\/code> pilkkovat tekstin ilman monikerroksista kaavaa.<\/li>\n<li class=\"leading-normal -mb-2\">Esim. &#8220;Etunimi Sukunimi&#8221; \u2192 <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">=TEXTSPLIT(A2,\" \")<\/code>.<\/li>\n<li class=\"leading-normal -mb-2\">Yhdistely: <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">TEXTJOIN<\/code> (erotin ja tyhjien ohitus) ja <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">CONCAT<\/code>\/<code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">CONCATENATE<\/code>.<\/li>\n<li class=\"leading-normal -mb-2\">Muotoon muunto: <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">VALUE<\/code> (teksti \u2192 numero), <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">TEXT<\/code> (numero \u2192 muotoiltu teksti), <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">NUMBERVALUE<\/code> (aluekohtaiset desimaalierottimet).<\/li>\n<\/ul>\n<h3 id=\"CtHxxAlOgvs8ZDiThzsqZ\" data-level=\"3\">Esitysmuoto ja raporttien luettavuus<\/h3>\n<ul class=\"list-disc list-outside leading-3 -mt-2 marker:text-inherit\">\n<li class=\"leading-normal -mb-2\"><code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">TEXT<\/code> on muotoilun sveitsil\u00e4inen linkkari: <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">=TEXT(Pvm,\"dd.mm.yyyy\")<\/code>, <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">=TEXT(Luku,\"#,##0.00 \u20ac\")<\/code>.<\/li>\n<li class=\"leading-normal -mb-2\">Ehdollinen muotoilu hoitaa korostukset. Rakennamme s\u00e4\u00e4nn\u00f6t selkeill\u00e4 kaavoilla, esim. <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">=A2&gt;Tavoite<\/code>. Pid\u00e4 s\u00e4\u00e4nn\u00f6t taulukossa l\u00e4hell\u00e4 dataa dokumentaatioksi.<\/li>\n<li class=\"leading-normal -mb-2\"><code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">ROUND<\/code>, <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">ROUNDUP<\/code>, <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">ROUNDDOWN<\/code>, <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">MROUND<\/code> auttavat esitystarkkuudessa. Talousraporteissa py\u00f6rist\u00e4mme esityssarakkeet \u2013 laskenta tehd\u00e4\u00e4n silti t\u00e4ystarkkuudella taustalla.<\/li>\n<\/ul>\n<h3 id=\"CtHxxAlOgvs8ZDiThzsqZ\" data-level=\"3\">LET ja LAMBDA esimerkill\u00e4<\/h3>\n<ul class=\"list-disc list-outside leading-3 -mt-2 marker:text-inherit\">\n<li class=\"leading-normal -mb-2\"><code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">LET<\/code> tekee tekstikaavoista inhimillisi\u00e4:<\/li>\n<li class=\"leading-normal -mb-2\"><code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">=LET(n, FILTER(Hinnasto[Hinta], Hinnasto[Alue]=G2), keski, AVERAGE(n), ROUND(keski,2))<\/code><\/li>\n<li class=\"leading-normal -mb-2\"><code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">LAMBDA<\/code> mahdollistaa omat funktiot ilman VBA: luomme esim. <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">LAMBDA(vero,brutto, brutto\/(1+vero))<\/code> ja annamme sille nimen <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">ALV_Poisto<\/code>. Sitten k\u00e4yt\u00e4mme <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">=ALV_Poisto(0,24: C2)<\/code>.<\/li>\n<\/ul>\n<p>Pieni k\u00e4yt\u00e4nt\u00f6: nime\u00e4 ratkaisusi. Kun palaamme tiedostoon puolen vuoden kuluttua, <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">LET(kriittinen_raja: ... )<\/code> kertoo enemm\u00e4n kuin ketju <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">B2&gt;0.15<\/code>.<\/p>\n<h2 id=\"FonawcvPMN9FRRlOVdOGb\" data-level=\"2\">Virheet (N\/A, VALUE!) ja korjaus<\/h2>\n<p>Virheet ovat viestej\u00e4 \u2013 kun luemme ne oikein, korjaus l\u00f6ytyy nopeasti. T\u00e4ss\u00e4 t\u00e4rkeimm\u00e4t.<\/p>\n<h3 id=\"CtHxxAlOgvs8ZDiThzsqZ\" data-level=\"3\">Yleisimm\u00e4t virheet ja syyt<\/h3>\n<ul class=\"list-disc list-outside leading-3 -mt-2 marker:text-inherit\">\n<li class=\"leading-normal -mb-2\"><code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">#N\/A<\/code>: arvoa ei l\u00f6ydy haussa (esim. <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">XLOOKUP<\/code>, <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">VLOOKUP<\/code>). Usein syyn\u00e4 v\u00e4lily\u00f6nti, eri kirjainkoko, etu- tai per\u00e4tyhj\u00e4t, tai eri datatyyppi (teksti vs. numero).<\/li>\n<li class=\"leading-normal -mb-2\"><code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">#VALUE.<\/code>: v\u00e4\u00e4r\u00e4 tyyppi laskennassa (esim. teksti\u00e4 yritet\u00e4\u00e4n laskea yhteen).<\/li>\n<li class=\"leading-normal -mb-2\"><code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">#REF.<\/code>: viittaus poistettuun tai virheelliseen alueeseen.<\/li>\n<li class=\"leading-normal -mb-2\"><code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">#DIV\/0.<\/code>: jako nollalla \u2013 joskus haluttu &#8220;varoitus&#8221;, usein vartioidaan ehdolla.<\/li>\n<li class=\"leading-normal -mb-2\"><code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">#NAME?<\/code>: funktio tai nimi kirjoitettu v\u00e4\u00e4rin tai ominaisuus ei ole k\u00e4ytett\u00e4viss\u00e4 versiossa.<\/li>\n<\/ul>\n<h3 id=\"CtHxxAlOgvs8ZDiThzsqZ\" data-level=\"3\">Korjaus- ja suojamuodot<\/h3>\n<ul class=\"list-disc list-outside leading-3 -mt-2 marker:text-inherit\">\n<li class=\"leading-normal -mb-2\"><code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">IFERROR(arvo, jos_virhe)<\/code> pehment\u00e4\u00e4 viesti\u00e4: <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">=IFERROR(XLOOKUP(...),\"Ei l\u00f6ydy\")<\/code>. Raporteissa hyv\u00e4, mutta \u00e4lk\u00e4\u00e4mme piilottako ongelmia diagnostiikan yli.<\/li>\n<li class=\"leading-normal -mb-2\"><code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">IFNA<\/code> on tarkempi hakuvirheisiin: ei nielaise muita virheit\u00e4.<\/li>\n<li class=\"leading-normal -mb-2\">Tarkistusfunktiot: <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">ISNUMBER<\/code>, <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">ISTEXT<\/code>, <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">ISBLANK<\/code>, <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">ISNA<\/code>, <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">ERROR.TYPE<\/code>. N\u00e4ill\u00e4 rakennamme &#8220;vartio-kaavoja&#8221;.<\/li>\n<li class=\"leading-normal -mb-2\">Sy\u00f6tt\u00f6tarkistus: muunnamme numerotekstit oikeiksi (<code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">VALUE<\/code>, <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">NUMBERVALUE<\/code>), poistamme n\u00e4kym\u00e4tt\u00f6m\u00e4t v\u00e4lily\u00f6nnit (<code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">TRIM<\/code>, <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">CLEAN<\/code>).<\/li>\n<\/ul>\n<h3 id=\"CtHxxAlOgvs8ZDiThzsqZ\" data-level=\"3\">Debuggaus k\u00e4yt\u00e4nn\u00f6ss\u00e4<\/h3>\n<ul class=\"list-disc list-outside leading-3 -mt-2 marker:text-inherit\">\n<li class=\"leading-normal -mb-2\">Kaavan arviointi (Kaavat &gt; Kaavan arviointi) ja J\u00e4ljit\u00e4 esivalinnat\/j\u00e4lkel\u00e4iset paljastavat, mist\u00e4 virhe l\u00e4htee.<\/li>\n<li class=\"leading-normal -mb-2\">Testisolut: kopioimme ongelmakaavan vaiheiksi <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">LET<\/code>-muuttujille tai erillisiksi soluiksi.<\/li>\n<li class=\"leading-normal -mb-2\">Versio-ongelmat: jos <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">XLOOKUP<\/code> ei toimi vanhassa tiedostossa, tarjoamme vaihtoehdon <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">INDEX\/MATCH<\/code>.<\/li>\n<\/ul>\n<p>Pro-vinkki: Raporteissa teemme selke\u00e4n virhelogiikan. Esim. jos haku ei l\u00f6yd\u00e4 asiakasta, palautamme &#8220;Tuntematon asiakas \u2013 tarkista koodi&#8221;, emme tyhj\u00e4\u00e4 solua.<br \/>\nKun haluat tehd\u00e4 virheist\u00e4 n\u00e4kyvi\u00e4 ja helposti seurattavia, hy\u00f6dynn\u00e4 my\u00f6s <a href=\"https:\/\/fundsnetservices.com\/fi\/excel\/muotoilu-ja-kaaviot\/\"><strong data-start=\"5141\" data-end=\"5174\">Muotoilu ja kaaviot Exceliss\u00e4<\/strong>.<\/a><\/p>\n<h2 id=\"BfuyE7FP4CxVvPboykG6m\" data-level=\"2\">\u00a0Kaavaoppaat (artikkelilistaus) + FAQ<\/h2>\n<p>Haluamme j\u00e4tt\u00e4\u00e4 teille ty\u00f6kalupakin, johon voi palata. T\u00e4ss\u00e4 kuratoitu artikkelilista ja usein kysytyt kysymykset.<\/p>\n<h3 id=\"CtHxxAlOgvs8ZDiThzsqZ\" data-level=\"3\">Kaavaoppaat (artikkelilistaus)<\/h3>\n<ul class=\"list-disc list-outside leading-3 -mt-2 marker:text-inherit\">\n<li class=\"leading-normal -mb-2\">Excelin dynaamiset matriisit k\u00e4yt\u00e4nn\u00f6ss\u00e4: FILTER, UNIQUE, SORT \u2013 15 nopeaa resepti\u00e4.<\/li>\n<li class=\"leading-normal -mb-2\">XLOOKUP vs. INDEX\/MATCH: suorituskyky, luettavuus ja erikoistapaukset.<\/li>\n<li class=\"leading-normal -mb-2\">SUMIFS syv\u00e4luotaus: p\u00e4iv\u00e4m\u00e4\u00e4r\u00e4t, jokerimerkit ja alue-logiikan sudenkuopat.<\/li>\n<li class=\"leading-normal -mb-2\">Tekstin pilkkominen 2026: TEXTSPLIT, TEXTAFTER\/BEFORE vs. perinteiset funktiot.<\/li>\n<li class=\"leading-normal -mb-2\">LET ja LAMBDA: miten kirjoitamme yll\u00e4pidett\u00e4vi\u00e4 kaavoja (mallipohja mukaan).<\/li>\n<li class=\"leading-normal -mb-2\">P\u00e4iv\u00e4m\u00e4\u00e4r\u00e4t ja ty\u00f6p\u00e4iv\u00e4t: NETWORKDAYS.INTL ja lomakalenterit \u2013 parhaat k\u00e4yt\u00e4nn\u00f6t.<\/li>\n<li class=\"leading-normal -mb-2\">Virheiden hallinta: #N\/A, #VALUE. ja datan puhdistus \u2013 ennen vai j\u00e4lkeen haun?<\/li>\n<li class=\"leading-normal -mb-2\">Taulukkoviittaukset ja nimialueet: luettavuus, suorituskyky ja dokumentointi.<\/li>\n<\/ul>\n<h3 id=\"CtHxxAlOgvs8ZDiThzsqZ\" data-level=\"3\">FAQ<\/h3>\n<ul class=\"list-disc list-outside leading-3 -mt-2 marker:text-inherit\">\n<li class=\"leading-normal -mb-2\">Miten valitsen <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">XLOOKUP<\/code>in ja <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">INDEX\/MATCH<\/code>in v\u00e4lill\u00e4?<\/li>\n<li class=\"leading-normal -mb-2\">Valitsemme <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">XLOOKUP<\/code>in oletuksena selkeyden ja yll\u00e4pidett\u00e4vyyden takia. Siirrymme <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">INDEX\/MATCH<\/code>iin, jos tarvitsemme maksimaalista kontrollia tai erityist\u00e4 suorituskyky\u00e4 isoissa tiedoissa.<\/li>\n<li class=\"leading-normal -mb-2\">Miksi kaavani antaa <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">#N\/A<\/code>, vaikka arvo on listassa?<\/li>\n<li class=\"leading-normal -mb-2\">Tyypillisesti datatyyppi eroaa (teksti vs. numero) tai arvossa on piilov\u00e4lily\u00f6nti. Kokeile <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">LEN()<\/code>-tarkistusta, <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">TRIM<\/code>\/<code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">CLEAN<\/code>ia ja muunna numeroteksti <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">VALUE<\/code>:lla.<\/li>\n<li class=\"leading-normal -mb-2\">Miten teen moniehtoisen haun ilman apusaraketta?<\/li>\n<li class=\"leading-normal -mb-2\"><code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">FILTER<\/code> dynaamisella ehdolla tai <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">XLOOKUP<\/code> yhdist\u00e4m\u00e4ll\u00e4 ehtomatriisin. Usein <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">INDEX(FILTER(...),1)<\/code> riitt\u00e4\u00e4 yksitt\u00e4iseen palautukseen.<\/li>\n<li class=\"leading-normal -mb-2\">Pit\u00e4isik\u00f6 minun k\u00e4ytt\u00e4\u00e4 taulukkoviittauksia aina?<\/li>\n<li class=\"leading-normal -mb-2\">Useimmiten kyll\u00e4. Ne skaalautuvat ja parantavat luettavuutta. Poikkeus: kun tarvitsemme vannoutunutta suorituskyky\u00e4 tai yhteensopivuutta hyvin vanhojen versioiden kanssa.<\/li>\n<li class=\"leading-normal -mb-2\">Miten dokumentoin kaavat?<\/li>\n<li class=\"leading-normal -mb-2\">K\u00e4yt\u00e4mme <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">LET<\/code>-muuttujia, Nimiruutua (nimialueet), kommentteja ja erillist\u00e4 &#8220;Logiikka&#8221;-v\u00e4lilehte\u00e4, jossa s\u00e4\u00e4nn\u00f6t ovat taulukkona. T\u00e4m\u00e4 nopeuttaa yll\u00e4pitoa valtavasti.<\/li>\n<li class=\"leading-normal -mb-2\">Miten v\u00e4lt\u00e4n hitautta isoissa ty\u00f6kirjoissa? Jos ongelma ei ole kaava vaan koko tiedoston rakenne, katso <a href=\"https:\/\/fundsnetservices.com\/fi\/excel\/mallit-ja-vianmaaritys\/\"><strong data-start=\"5506\" data-end=\"5532\">Mallit ja vianm\u00e4\u00e4ritys.<\/strong><\/a><\/li>\n<li class=\"leading-normal -mb-2\">V\u00e4lt\u00e4mme haihtuvia funktioita (<code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">INDIRECT<\/code>, <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">OFFSET<\/code>, usein my\u00f6s <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">TODAY\/ NOW<\/code> liiallisesti). Suodatamme dataa <code class=\"rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900\" spellcheck=\"false\">FILTER<\/code>illa, k\u00e4yt\u00e4mme taulukoita, harkitsemme Power Query\u00e4 ja pid\u00e4mme kaavat mahdollisimman paikallisina.<\/li>\n<\/ul>\n<p>Jos haluatte, voimme rakentaa teille mallipohjan, jossa n\u00e4m\u00e4 k\u00e4yt\u00e4nn\u00f6t ovat valmiina: dynaamiset taulukot, selke\u00e4 haku-arkkitehtuuri, virhelogiikka ja dokumentaatio. N\u00e4in Excel-kaavat ja funktiot palvelevat teit\u00e4, eiv\u00e4t p\u00e4invastoin.<\/p>\n","protected":false},"excerpt":{"rendered":"Excel formulas and functions are your everyday superpower. They turn plain spreadsheets into powerful calculation tools, automate repetitive tasks, and reveal insights you\u2019d never catch at a glance. In this guide, we\u2019ll walk through the most essential groups of functions\u2014from quick, basic fixes to smart lookup formulas and flexible, dynamic calculations. You\u2019ll follow practical, real-world&#8230; <a class=\"view-article\" href=\"https:\/\/fundsnetservices.com\/fi\/excel\/kaavat-ja-funktiot\/\">View Article<\/a>","protected":false},"author":1,"featured_media":0,"parent":20519,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"inline_featured_image":false,"lazy_load_responsive_images_disabled":false,"footnotes":""},"class_list":["post-20689","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<title>Excel-kaavat ja funktiot: Opas aloittelijasta ammattilaiseksi<\/title>\n<meta name=\"description\" content=\"Opi t\u00e4rkeimm\u00e4t Excel-kaavat ja funktiot selkeiden esimerkkien avulla. Kattava opas auttaa sinua hallitsemaan datan k\u00e4sittelyn ja s\u00e4\u00e4st\u00e4m\u00e4\u00e4n aikaa t\u00f6iss\u00e4.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fundsnetservices.com\/fi\/excel\/kaavat-ja-funktiot\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Excel-kaavat ja funktiot: Opas aloittelijasta ammattilaiseksi\" \/>\n<meta property=\"og:description\" content=\"Opi t\u00e4rkeimm\u00e4t Excel-kaavat ja funktiot selkeiden esimerkkien avulla. Kattava opas auttaa sinua hallitsemaan datan k\u00e4sittelyn ja s\u00e4\u00e4st\u00e4m\u00e4\u00e4n aikaa t\u00f6iss\u00e4.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fundsnetservices.com\/fi\/excel\/kaavat-ja-funktiot\/\" \/>\n<meta property=\"og:site_name\" content=\"FundsNet FI\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"6 minutes\" \/>","yoast_head_json":{"title":"Excel-kaavat ja funktiot: Opas aloittelijasta ammattilaiseksi","description":"Opi t\u00e4rkeimm\u00e4t Excel-kaavat ja funktiot selkeiden esimerkkien avulla. Kattava opas auttaa sinua hallitsemaan datan k\u00e4sittelyn ja s\u00e4\u00e4st\u00e4m\u00e4\u00e4n aikaa t\u00f6iss\u00e4.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fundsnetservices.com\/fi\/excel\/kaavat-ja-funktiot\/","og_locale":"en_US","og_type":"article","og_title":"Excel-kaavat ja funktiot: Opas aloittelijasta ammattilaiseksi","og_description":"Opi t\u00e4rkeimm\u00e4t Excel-kaavat ja funktiot selkeiden esimerkkien avulla. Kattava opas auttaa sinua hallitsemaan datan k\u00e4sittelyn ja s\u00e4\u00e4st\u00e4m\u00e4\u00e4n aikaa t\u00f6iss\u00e4.","og_url":"https:\/\/fundsnetservices.com\/fi\/excel\/kaavat-ja-funktiot\/","og_site_name":"FundsNet FI","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/fundsnetservices.com\/fi\/excel\/kaavat-ja-funktiot\/","url":"https:\/\/fundsnetservices.com\/fi\/excel\/kaavat-ja-funktiot\/","name":"Excel-kaavat ja funktiot: Opas aloittelijasta ammattilaiseksi","isPartOf":{"@id":"https:\/\/fundsnetservices.com\/fi\/#website"},"datePublished":"2026-02-07T06:29:08+00:00","dateModified":"2026-02-07T06:29:08+00:00","description":"Opi t\u00e4rkeimm\u00e4t Excel-kaavat ja funktiot selkeiden esimerkkien avulla. Kattava opas auttaa sinua hallitsemaan datan k\u00e4sittelyn ja s\u00e4\u00e4st\u00e4m\u00e4\u00e4n aikaa t\u00f6iss\u00e4.","breadcrumb":{"@id":"https:\/\/fundsnetservices.com\/fi\/excel\/kaavat-ja-funktiot\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fundsnetservices.com\/fi\/excel\/kaavat-ja-funktiot\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fundsnetservices.com\/fi\/excel\/kaavat-ja-funktiot\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/fundsnetservices.com\/fi\/"},{"@type":"ListItem","position":2,"name":"Excel-oppaat ja vinkit","item":"https:\/\/fundsnetservices.com\/fi\/excel\/"},{"@type":"ListItem","position":3,"name":"Excel-kaavat ja funktiot"}]},{"@type":"WebSite","@id":"https:\/\/fundsnetservices.com\/fi\/#website","url":"https:\/\/fundsnetservices.com\/fi\/","name":"FundsNet FI","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fundsnetservices.com\/fi\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/fundsnetservices.com\/fi\/wp-json\/wp\/v2\/pages\/20689","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fundsnetservices.com\/fi\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/fundsnetservices.com\/fi\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/fundsnetservices.com\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fundsnetservices.com\/fi\/wp-json\/wp\/v2\/comments?post=20689"}],"version-history":[{"count":6,"href":"https:\/\/fundsnetservices.com\/fi\/wp-json\/wp\/v2\/pages\/20689\/revisions"}],"predecessor-version":[{"id":21876,"href":"https:\/\/fundsnetservices.com\/fi\/wp-json\/wp\/v2\/pages\/20689\/revisions\/21876"}],"up":[{"embeddable":true,"href":"https:\/\/fundsnetservices.com\/fi\/wp-json\/wp\/v2\/pages\/20519"}],"wp:attachment":[{"href":"https:\/\/fundsnetservices.com\/fi\/wp-json\/wp\/v2\/media?parent=20689"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}