Transpozice, rotace a zrcadlení matice v Excelu

Transpozice a rotace matice v Excelu představuje operace s hodnotami matice (pole, oblasti buněk). Transpozice připomíná jakési překlápění hodnot přes hlavní nebo vedlejší diagonálu (“co byl řádek, bude sloupec, a naopak”, tj. jednosloupcovou oblast si představte jako koš s prádlem, které kousek po kousku rozvěsíte na šňůru). Rotace se děje ve smyslu hodinových ručiček (clockwise, CW) nebo v opačném směru (counterclockwise, CCW). Cílem někdy může být i prohazování řádků či sloupců. Děje-li se tak uspořádaně přes vodorovnou či svislou osu, pak mluvíme o zrcadlení.

Rotace, transpozice a zrcadlení matice hodnot
Rotace, transpozice a zrcadlení matice hodnot

Některé operace se mohou skládat z jiných. Je vidět, že kupříkladu revers tvoří dvojí 90° rotace, čili 180° rotace.

Rotaci bodu v rovině coby dvouhodnotové svislé matice (sloupcového vektoru) jsme si ukázali v článku Tachometr v Excelu. Pro rotaci hodnot ve větší matici bychom museli sáhnout hlouběji do teorie a popravdě řečeno, na to nemám dost mozkových buněk, zatímco těch v Excelu se nabízí dostatek. Na řešení se zkrátka podíváme hravějším způsobem, s pomocí vzorců.

Pro transpozici se v Excelu nabízí stejnojmenná funkce TRANSPOZICE a dokonce se na ni soustředí i dialog Vložit jinak (volba Transponovat). Můžeme si tak snadno změnit uspořádání tabulky pokud zjistíme, že popisky sloupců jsou dlouhé, a nevyplatí se zalamování. Takové položky rozvahy vždy budou v řádcích. Příkaz WorksheetFunction.Transpose ve VBA nám zase usnadní život ve chvíli, kdy jsme nuceni otočit pole záznamů získaných z databáze nebo překlopit opačně orientované pole do oblasti Range. Programováním se ale dnes zabývat nebudeme.

Číslování buněk na listu

Abychom vůbec mohli ve vzorcích pracovat s konkrétními hodnotami oblasti, musíme si je umět očíslovat. Jako první pomocníci se nabízí funkce ŘÁDEK a SLOUPEC. Do týmu ještě přibereme jejich rodiče – funkce ŘÁDKY a SLOUPCE vracející počet řádků a sloupců v předložené oblasti. Uplatní se zde smíšené adresování. O finále se postarají funkce POSUN nebo INDEX. Zatímco u funkce POSUN je výhodnější začínat indexování od nuly, INDEX už pracuje dle očekávání od jedničky. No a že budeme doslova oblast převracet naruby, hodí se také “odčítání” při postupování konce. U nematicové formy je zpravidla uvedený vzorec z levé horní buňky rozkopírován do dalších klasickým tažením za vyplňovací úchyt (případně výběr oblasti, zápis vzorce a Ctrl + Enter).

 

Číslování buněk na listu
Číslování buněk na listu

Vzorce lze samozřejmě kombinovat. Všechny jsou koncipovány tak, aby vycházeli z první buňky zpracovávané oblasti. Stojíte-li o jednodušší formu, můžete vyjít z nějaké jiné (rohové) buňky. Uvidíte, jak se zjednoduší úvaha i čítač.

Abychom byli patřičně na výši, uvádím i maticové formy vzorců pro indexování.

Číslování buněk na listu
Číslování buněk na listu

U čistě číselných matic, kde se objevuje odčítání jedničky, je vidět, že je možné je ještě zjednodušit (všechny elementy mohou být o jedničku nižší).

Patřičně vyzbrojeni už bychom nyní měli zvládnou všechny možné hrátky s maticí hodnot.

Rotace a transpozice oblasti buněk s pomocí vzorců Excelu
Rotace a transpozice oblasti buněk s pomocí vzorců Excelu

Záměnné matice

V dané problematice se mohou uplatnit i tzv. záměnné matice. Jsou šikovně poskládané z jedniček a nul, a jejich součinem s původní matic můžeme docílit kýženého stavu. Typicky umí prohazovat řádky či sloupce v libovolném pořadí. Pozor na jednou věc. Pořadí matic v součinu je podstatné a musíme dodržovat i pravidlo o počtu řádků a sloupců matic v součinu i výsledné matice: A[m, n ] * B[n, o] = C[m, o]

Záměnné matice

Záměnné maticeMožná vám v tuto chvíli nepřišel článek příliš praktický, ale věřte, že pokud v budoucnu budete trávit čas nad algebrou a algoritmy, bude se hodit. Úplně stačí, když si odnesete poznatek o tom, jak se s funkcí ŘÁDEK tvoří čítač, čí jak definovat horní mez matice ve funkci NEPŘÍMÝ.ODKAZ. K tématu se ještě jednou vrátíme, až budeme chtít efektivně procházet dvourozměrnou oblast v rámci jedno cyklu.

Ke stažení
matice_transpozice_rotace_zrcadleni.zip