Якщо у вас є вихідна таблиця під назвою "datatable", покладіть цю формулу на додатковий аркуш у кожну комірку (де мають бути надруковані дані):
=OFFSET(datatable!$A$2;(ROW()-2)+((COLUMN()-1-MOD(COLUMN()-1;3))/3*4);MOD(COLUMN()-1;3))
( Вище переводяться з німецької на англійську тестованих німецької формулу :. =BEREICH.VERSCHIEBEN(datatable!$A$2;(ZEILE()-2)+((SPALTE()-1-REST(SPALTE()-1;3))/3*4);REST(SPALTE()-1;3))
)
Очікуваний результат:
Це перетворить зміст аркуша "дані":
A1 B1 C1
A2 B2 C2
A3 B3 C3
A4 B4 C4
A5 B5 C5
A6 B6 C6
...
в:
A1 B1 C1 A5 B5 C5 ...
A2 B2 C2 A6 B6 C6 ...
A3 B3 C3 ...
A4 B4 C4 ...
Пояснення:
Основи:
наприклад, OFFSET( datatable!$A$2; 3; 4 )
посилання на комірку щодо $A$2
, 3 рядки вниз, 4 стовпчики праворуч.
ROW()
і COLUMN()
є числами, що представляють положення поточної комірки в поточному аркуші (наприклад, $A$1
= стовпець 1 / рядок 1, $C$2
= стовпець 3 / рядок 2).
(-1)
Скрізь необхідні , тому що ми використовуємо зміщення, а перший рядок і стовпець 1, але ми хочемо , щоб перший зазначена осередок буде $A$2
, чи не $A$2
плюс зміщення 1.
Це (ROW()-2)
для заголовка в таблиці виводу / друку (воно повинно бути -1, якщо у вас немає заголовка).
$A$2
є для заголовка у джерелі "datatable". Без заголовка на нього слід посилатися $A$1
(замість $A$2
).
Деталі:
3-й параметр OFFSET(...;...;MOD(COLUMN()-1;3))
- це зміщення стовпця , він завжди посилатиметься на один із перших 3 стовпців джерела "datatable".
Це $A$2
плюс зміщення стовпців 0, 1, 2, 0, 1, 2, 0, 1, 2, ...
У 2-му параметрі OFFSET(...; (ROW()-2) + ((COLUMN()-1-MOD(COLUMN()-1;3))/3*4) ;...)
вибирається зміщення рядка .
В основному математика тут y + x * 4.
4 - кількість рядків, які ви хочете відобразити.
3 - кількість стовпців у вихідному "даних".
Х складається з стовпця, а модуль 3.
COLUMN()-1
дорівнює 0, 1, 2, 3, ... і так далі.
MOD(COLUMN()-1;3)
буде 0, 1, 2, 0, 1, 2, 0, 1, 2, ...
COLUMN()-1-MOD(COLUMN()-1;3)
буде 0, 3, 6, 9, ... і так далі, де значення змінюється лише для кожного 3-го стовпця.
Ділення на 3 призведе до 0, 1, 2, 3, ...
Множення на 4 призведе до 0, 4, 8, 12, ...
(Пояснення щодо Modulo див. MOD()
У довідці excel або операції з модулем у wikipedia )
(Дякую Джейку Качеру, за основну ідею)