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ł)
Najprostszym sposobem, jaki znalazłem, było utworzenie nowego arkusza roboczego i po prostu odtworzenie tabeli ręcznie, rozdzielając ją na osobne kolumny.
np. A1
=Sheet1!A1
B1
=Sheet1!B1
C1
=Sheet1!C1
D1 puste (dla kolumny dzielącej)
następnie E1
=Sheet1!E51
F1
=Sheet1!B51
G1
=Sheet1!C51
I skopiuj to ponad 50 wierszy. To następnie zamienia pojedynczą kolumnę 100-rzędową tabelę w 2-kolumnową 50-rzędową tabelę. Dostosuj do swoich potrzeb.
Oczywiście jest to ręczne i zależy od liczby wierszy pozostających bez zmian. Dynamiczne obliczenie wymaganej liczby wierszy na podstawie liczby wierszy w oryginalnej tabeli i liczby potrzebnych kolumn nie byłoby trudne. Jedynym problemem jest to, że oryginalna tabela wykracza poza to, co zmieści się na pojedynczej stronie po podzieleniu na kolumny na nowym arkuszu.
źródło
Jeśli masz program Adobe Indesign, możesz w nim umieścić plik programu Excel i z łatwością utworzyć ten układ.
źródło