h kirjoitti: Jos jätetään pois >< merkit, voiko suoraan viitata matriisin
sinisiin otsikkolukuihin rivi- & sarakenumeroiden sijasta?
Esim. haluttaessa kotimaalit 1,2,3 jotenkin B1:H1<4
vierasmaaleissa 4,5,6 vastaavasti A2:A8>3
Kun näistä matriisien indeksointitavoista varmasti on hyötyä useammallekin käyttäjälle, laitetaan niistä muistiin muutama sana.
Perusfunktiot matriisikaavoissa ovat INDEX (INDEKSI) ja OFFSET (SIIRTYMÄ).
INDEX'illä on helppo poimia yksittäisiä matriisi-alkioita ja OFFSET taas soveltuu paremmin alueiden käsittelyyn.
Huom.! Tässä esillä olevassa h:n esimerkissä kotijoukkueen maalit ovat 1-rivillä ja vierasmaalit A-sarakkeessa.
Kaavojen kannalta olisi loogisempaa että ne olisivat toisinpäin. Seuraavassa kaavat on kuitenkin kirjoitettu esimerkkitilanteen mukaisesti.
Jos vaikkapa halutaan etsiä matriisista alkio
kotimaalit = 4, vierasmaalit = 2,
se saadaan näin:
=INDEX(B2:H8;3;5)
- rivi-indeksi = 3 koska 2 vierasmaalia on 3. alkio vierasmaalien vektorissa A2:A8
- sarake-indeksi = 5 koska 4 kotimaalia on 5. alkio kotimaalien vektorissa B1:H1
INDEX -funktio itse ei näe mitään otsikkosarakkeita tai -rivejä, se näkee vain matriisin määritysalueen (B2:H8) ja laskee rivit ja sarakkeet tästä alueesta.
Tarvitaan käyttäjän silmä etsimään tiettyjä maalimääriä vastaavat rivi- ja sarakeindeksit matriisissa.
Tai vaihtoehtoisesti, kaavavelhojen onneksi
- voidaan käyttää MATCH -funktioita hakemaan kyseiset numerot ja kertomaan ne INDEX -funktiolle:
MATCH -funktio palauttaa haluttuja maalilukuja vastaavat matriisi-indeksit.
Sellaiset merkinnät kuin
<4 tai
>3 ovat excel'issä yksinkertaisesti vain merkkijonoja (eli tekstiä) ja siksi niiden merkitseminen matriisikaavoihin voi olla jonkin verran haastavaa.
Tässä nimenomaisessa erikoistapauksessa matriisialueiden käsittely on kuitenkin hyvin helppoa kun merkinnät muutetaan vähän toiseen muotoon:
<4 merkitään
0-3 tai
0123
>3 merkitään
4-6 tai
456
Esimerkki:
halutaan ynnätä matriisista alue:
kotimaalit 0-3, vierasmaalit 4-6:
Peruskaava on tällöin muotoa:
=SUM(OFFSET(B2;4;0;3;4), jossa numeerisilla arvoilla on järjestyksessä seuraavat merkitykset
- 4 = vierasmaalien alaraja,
- 0 = kotimaalien alaraja,
- 3 = vierasmaalien haarukan leveys (4, 5, 6)
- 4 = kotimaalien haarukan leveys (0, 1, 2, 3)
Tästä perusmallista on helppo aukikirjoittaa kaavat, jotka ymmärtävät suoraan kahta edellä esitettyä merkintätapaa (soluviittaukset allaolevan kuvan mukaisia):
- jos käytetään 0-3 -muotoista merkintätapaa kaava on
=SUM(OFFSET($B$2;LEFT(C13;1);LEFT(B13;1);RIGHT(C13;1)-LEFT(C13;1)+1;RIGHT(B13;1)-LEFT(B13;1)+1))
- ja vastaavasti 0123 -muotoisella notaatiolla kaava on
=SUM(OFFSET($B$2;LEFT(C18;1);LEFT(B18;1);LEN(C18);LEN(B18)))
Molemmat kaavat soveltuvat maaliluvuille 0 - 9. Ylempi kaava voidaan muokata myös suuremmille maaliluvuille sopivaksi.
Tip:
Joskus näkee excelistien muuttavan solun formaatin tekstiksi kun haluavat kirjoittaa tekstinä esim. 4-6.
Suositeltava tapa on kuitenkin kirjoittaa tekstin eteen hipsu ('), siis tässä tapauksessa
'4-6
Sama merkintätapa on suositeltava myös silloin kun halutaan solussa olevan kaavan näkyvän tekstinä.
Nimityksistä:
Taulukkolaskennan englanninkielinen termi
array tarkoittaa yksi- tai useampiulotteista järjestettyä (=indeksoitua) alkiojoukkoa.
Suomenkielessä taulukkolaskentayhteyksissä puhutaan usein vain taulukoista.
Matemaattinen termi matriisi on tullut mukaan kun excel'in englanninkielinen nimitys
array formula tavallisesti suomennetaan sanoilla matriisikaava tai vektorikaava
(matematiikassa 1-ulotteista matriisia kutsutaan vektoriksi).
Ylläolevassa tekstissä sana matriisi voidaan ilman väärinkäsitysten vaaraa korvata sanalla taulukko.