Jeśli masz tabelę źródłową o nazwie „datatable”, umieść tę formułę na dodatkowym arkuszu w każdej komórce (tam, gdzie powinny pojawić się wydrukowane dane):
=OFFSET(datatable!$A$2;(ROW()-2)+((COLUMN()-1-MOD(COLUMN()-1;3))/3*4);MOD(COLUMN()-1;3))
( Powyższe są tłumaczone z niemieckiego na angielski Badany niemiecki wzór jest. =BEREICH.VERSCHIEBEN(datatable!$A$2;(ZEILE()-2)+((SPALTE()-1-REST(SPALTE()-1;3))/3*4);REST(SPALTE()-1;3))
)
Spodziewany wynik:
Spowoduje to przekształcenie zawartości arkusza „datatable”:
A1 B1 C1
A2 B2 C2
A3 B3 C3
A4 B4 C4
A5 B5 C5
A6 B6 C6
...
w:
A1 B1 C1 A5 B5 C5 ...
A2 B2 C2 A6 B6 C6 ...
A3 B3 C3 ...
A4 B4 C4 ...
Wyjaśnienie:
Podstawy:
np. OFFSET( datatable!$A$2; 3; 4 )
odwołuje się do komórki względem $A$2
, 3 wierszy w dół, 4 kolumn po prawej stronie.
ROW()
i COLUMN()
są liczbami reprezentującymi pozycję bieżącej komórki w bieżącym arkuszu (np. $A$1
= kolumna 1 / wiersz 1, $C$2
= kolumna 3 / wiersz 2).
(-1)
Wszędzie są konieczne, ponieważ używamy offsetu, a pierwszy wiersz i kolumna 1, ale chcemy najpierw odwołuje się do komórek $A$2
, a nie $A$2
plus offset 1.
(ROW()-2)
Jest nagłówek w output- / wydruku tabeli (shold to być -1 jeśli nie ma nagłówka).
$A$2
jest nagłówek w źródle „datatable”. Bez nagłówka należy się do niego odwołać $A$1
(zamiast $A$2
).
Detale:
Trzeci parametr OFFSET(...;...;MOD(COLUMN()-1;3))
to przesunięcie kolumny , zawsze będzie odnosić się do jednej z pierwszych 3 kolumn źródła „datatable”.
To jest $A$2
plus przesunięcie kolumny 0, 1, 2, 0, 1, 2, 0, 1, 2, ...
W drugim parametrze OFFSET(...; (ROW()-2) + ((COLUMN()-1-MOD(COLUMN()-1;3))/3*4) ;...)
wybiera przesunięcie wiersza .
Zasadniczo matematyka tutaj to y + x * 4.
4 to liczba wierszy, które chcesz wyświetlić.
3 to liczba kolumn w źródłowym „datatable”.
X składa się z kolumny, a moduł 3.
COLUMN()-1
wynosi 0, 1, 2, 3, ... i tak dalej.
MOD(COLUMN()-1;3)
będzie 0, 1, 2, 0, 1, 2, 0, 1, 2, ...
COLUMN()-1-MOD(COLUMN()-1;3)
będzie wynosić 0, 3, 6, 9, ... i tak dalej, gdzie wartość zmienia się tylko co 3 kolumnę.
Dzielenie przez 3 spowoduje 0, 1, 2, 3, ...
Mnożenie przez 4 spowoduje 0, 4, 8, 12, ...
(Aby uzyskać wyjaśnienie dotyczące Modulo , zobacz także MOD()
w pomocy programu Excel lub operacji modulo w Wikipedii )
(Dzięki Jake Kacher za podstawowy pomysł)