… ter matrične funkcije še tretjič …

Predhodno:

Generatorji števil

Čisto ob koncu prvega prispevka sem vam v hitrem primeru matrične funkcije zapisal sledečo funkcijo:

{=SUM(ROW(1:100)) }

Kot sem zapisal, in kot smo preizkusili, je funkcija vrnila rezultat 5050, kar je seštevek prvih 100 števil. Funkcija deluje, saj ji podfunkcija ROW(1:100) pač vrne sto števil, 1,2,3….100.

To omenjam posebej, saj je ob uporabi matričnih funkcij ta »trik« zelo uporaben. S pomočjo takšnega generatorja števil, vam torej ni potrebno v celice vnašati zaporedja, temveč ga lahko kar »vzamemo«.

Odgovor na prvotno vprašanje

V že omenjenem prvem prispevku o matričnih funkcijah pa sem vam čisto na koncu zapisal sledečo matrično funkcijo, ki vrne rezultat 29087, ter vam obljubil, da vam bom razložil, kaj funkcija počne in kako Excel zatorej pride do takšnega rezultata?

{ =SUM(IF(MOD(ROW(1:1000);17)=0;ROW(1:1000);0)) }

Za razlago poteka te funkcije je najlažje, da si namesto ROW(1:1000), pač izmislimo neko število (npr. 523) in poglejmo, kaj funkcija naredi v tem primeru:

{ =IF(MOD(523;17)=0;523;0) }

Excel torej najprej preveri ali je 523 deljivo s 17 in ker ni, vrne 0. Če pa bi namesto 523 vpisali 527, ki pa je deljivo s 17, pa bi Excel vrnil 527.

Dobro; ta if stavek torej vrne 0, če neko število ni deljivo s 17 in število samo, če je deljivo s 17.

Matrična funkcija pa uporabi generator prvih 1000 števil in posledično za vsako izmed njih preveri ali je deljivo s 17 ali ne. Ko Excel pridobi teh 1000 števil, pa ji preprosto sešteje. Ker števila, ki niso deljiva s 17 vračajo 0 in torej ne prispevajo k rezultatu, nam zatorej funkcija vrne seštevek vseh števil med 1 in 1000, ki so deljiva s 17.

Kaj pa če bi nas zanimalo, koliko je teh števil?

Vse kar je potrebno storiti je, da v primeru deljivosti pač vrnemo število 1 in potem seštejemo vse te enice:

{ =SUM(IF(MOD(ROW(1:1000);17)=0;1;0)) }

Lahko pa, če število ni deljivo s 17, pač vrnemo prazno vrednost in potem preštejemo vsa števila:

{ =COUNT(IF(MOD(ROW(1:1000);17)=0; ROW(1:1000);"")) }

In v vsakem primeru dobite vrednost 58, saj je med 1 in 1000 pač 58 števil, ki so deljiva s 17. POZOR: Pravilni odgovor na vprašanje koliko števil med 1 in 1000 je deljivih s 17 pa je seveda:

=INT(1000/17)

Ne pozabite; samo zato, ker poznate matrične funkcije še ni potrebno vsega reševati z njimi ;)…

Več pa prihodnjič…

Komentirajte prispevek

This site uses Akismet to reduce spam. Learn how your comment data is processed.