«

»

jul 01

Tömbképletek 1. rész: TRANSZPONÁLÁS

Írnom kell a tömbképletekről. Nem csak azért, mert hasznosak, hanem azért is, mert a PowerPivot tréningen felmerült egy érdekes használati eset… de erről inkább a következő bejegyzésben lesz szó. Most maradjunk az alapoknál, és kezdjük egyszerű példával. Két megoldást mutatok meg, amiket összehasonlítva könnyű lesz megérteni, hogy hogyan dolgoznak a tömbképletek, s miben térnek el a hagyományos képletektől.

Egy oszlopban egymás alá vannak írva a hét napjainak nevei – ezt kellene egy sorba átrendezni.

Tehát ebből:

mátrix_01

Kellene ilyet csinálni:

mátrix_02

Először ismerkedjünk meg a tömb (array) fogalmával. A tömb adatok sorozatát jelenti. A fenti két képen két tömböt láttok: az első tömb egy oszlopos (és 7 soros), a második egy soros (és 7 oszlopos), mindkettőnek a hét napjai az elemei. A tömb tartalmazhat egyszerre több sort és oszlopot is, ilyenkor két dimenziós tömbről beszélünk.

Ha olvastátok az INDEX formula alapjairól szóló cikket, akkor biztosan eszetekbe jut egy megoldás: az oszlopból (tömbből!) kiolvassuk az első, második, harmadik… elemet:

mátrix_03

A formula első paramétere a B oszlopban található tömb, ebből a fenti segéd sorba írt sorszámokra hivatkozva vesszük ki az elemeket – így egyszerűen jobbra másoljuk a formulát.

Lássuk a másik megoldást!

Az Excelnek van erre a feladatra egy speciális formulája, a TRANSZPONÁLÁS (TRANSPOSE). Ezzel a formulával lehet egy tömböt “átforgatni”: a sorokból oszlopot, az oszlopokból sort csinálni. Már ebből a meghatározásból is következik, hogy ez a formula a tömbből egy másik tömböt csinál – vagyis a formula eredménye egy tömb lesz.

Eddig csak olyan formulákat használtunk, amiknek az eredménye egy érték volt: beírtuk a cellába a formulát, és az eredmény megjelent a cellában. A TRANSZPONÁLÁS formula esetében azonban valami másnak kell történnie: az eredmény nem tud megjelenni egy cellában, mert egy tömböt nem lehet egy cellába “begyömöszölni”. Az fog történni, hogy egy formulát írunk fel, de több cellát használunk az eredmény megjelenítésére.

Az Excelben a Ctrl+Shift+Enter billentyűkombinációt használjuk, ha tömb eredményt kell megjeleníteni több cellában. Nézzük a példát!

mátrix_05

Tudjuk, hogy az eredmény egy sor lesz, ami 7 elemet tartalmaz. Jelöld ki a D2:J2 tartományt. A szerkesztőlécen írd be a formulát, és nyomj Crtl+Shift+Entert. Ezzel egy formulát írtál be, de 7 cellát töltesz ki a munkalapon.

Lényeges különbség az INDEX-es megoldáshoz képest, hogy az INDEX esetében egy cellába egy formulát írtál, ami egy elemet adott vissza a tömbből. Ezt a formulát másoltad jobbra, így kaptad a következő elemet. A TRANSZPONÁLÁS formula egyszer számolja ki, és egyben adja vissza a tömböt. Nem másolod a formulát semerre, hanem egyszerre írod be a 7 cellába, így mind a 7 cellában ugyanazt a képletet látod. Figyeld meg, hogy nem “dollároztuk” le a hivatkozást – erre nincs szükség, hiszen nem másoltuk a formulát semerre! :)

A tömbképletet a szerkesztőlécen kapcsos zárójel jelzi a képlet körül (ezt a Ctrl+Shift+Enter teszi oda, nem lehet csak úgy begépelni):

mátrix_06

A tömbképletek fontos jellemzői:

  • A tömbképletet az Excel mindig egy képletként kezeli.
  • Egyszer kalkulálódik ki, függetlenül attól, hogy hány cellába íródik az eredmény.
  • A tömbképlethez tartozó egyes cellák tartalmát nem tudod módosítani, törölni, vagy az egyes cellákat áthelyezni.
  • A tömbképletet bármely cellában módosíthatod, a módosítás az egész tömbre érvényes lesz (hiszen valójában egy képletről van szó): a Ctrl+Shift+Enter megnyomása után a tömb minden cellájában a módosított képletet látod.
  • A tömbképletbe nem szúrható be és nem törölhető oszlop/sor.
  • A tömbképleteket a Ctrl+Shift+Enter lezárás miatt CSE formulának is szokták nevezni.

A következő bejegyzésben egy hasznos tömbképlet megoldást mutatok majd be: hogyan lehet a számok abszolút értékét egyszerűen összegezni.

 

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöljük.

Az alábbi HTML kódok használhatóak: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

css.php