Если у вас есть исходная таблица с именем «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)
Для заголовка в output- / распечатки таблицы (Это shold быть -1 , если вы не заголовок).
$A$2
для заголовка в источнике "датируемые". Без заголовка на него следует ссылаться $A$1
(вместо $A$2
).
Детали:
Третий параметр 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 - количество столбцов в источнике «датируемые».
X состоит из столбца и по модулю 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, или операции по модулю в Википедии )
(Спасибо Джейку Качеру, за основную идею)
Самый простой способ, который я нашел, - это создать новый лист и просто воссоздать таблицу, разделив ее вручную на отдельные столбцы.
например, А1
=Sheet1!A1
B1
=Sheet1!B1
С1
=Sheet1!C1
D1 пусто (для разделительной колонки)
затем E1
=Sheet1!E51
F1
=Sheet1!B51
G1
=Sheet1!C51
И скопируйте это более 50 строк. Это затем превращает таблицу строк с одним столбцом 100 в таблицу строк с двумя столбцами 50. Отрегулируйте в соответствии с вашими потребностями.
Конечно, это вручную, и зависит от количества строк, оставшихся неизменными. Нетрудно динамически рассчитать количество требуемых строк, исходя из количества строк в исходной таблице и количества столбцов, которое вы хотите. Единственная проблема заключается в том, если исходная таблица выходит за рамки того, что уместится на одной странице, когда она разделена на столбцы на новом листе.
источник
Если у вас есть Adobe Indesign, вы можете поместить в него файл Excel и с легкостью создать этот макет.
источник