Если у вас есть исходная таблица с именем "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))
)
ожидаемый результат:
Это преобразует содержимое листа "datatable":
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
для заголовка в источнике "датируемый". Без заголовка на него следует ссылаться с $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) ;...)
выбирает смещение строки.
В основном математика здесь у + х * 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, ...
(Для объяснения о модуле, см. Также MOD()
в справке по Excel, или операцию по модулю в Википедии)
(Спасибо Джейку Качеру, за основную идею)