Как распечатать лист Excel в многостолбцовой раскладке?

13

В моем листе Excel у меня есть три столбца A, B, C, которые очень тонкие, но имеют много линий (> 500). Теперь, если я распечатаю это, я получу 10 страниц, которые почти пусты. Только на левой границе каждой страницы я вижу эти три столбца.

Что я хочу сделать, это напечатать весь этот лист в многоколоночном макете. 2 или 3 столбца на страницу будет достаточно. В настоящее время я делаю это, копируя значения из Excel, вставляя их в документ Word, а затем использую функцию многоколоночного макета Word. Разве нет способа достичь этого непосредственно в Excel?

Чтобы прояснить мою проблему: в настоящее время мои страницы выглядят так

A B C
A B C
A B C
A B C
. . .

Но то, что я хочу, это:

A B C     A B C     A B C
A B C     A B C     A B C
A B C     A B C     A B C
. . .     . . .     . . .
RoflcoptrException
источник

Ответы:

10

Я не думаю, что Excel может сделать это. Возможный обходной путь - использовать Microsoft Word и разбивать столбцы вокруг: Как разделить столбцы, чтобы использовать меньше страниц

Использование MS Word для создания столбцов Snake (#msword)

Это, вероятно, самый простой способ для однократного использования, поскольку я не вставлял диалоговое окно в свой макрос Excel, описанный ниже.

  1. Выберите и скопируйте столбцы из электронной таблицы Excel.
  2. Вставить в Word, это займет несколько минут
  3. Выберите строки, которые нужно повторить вверху таблицы, затем укажите это в Word с таблицей -> Строки для повторения
  4. Выделите всю таблицу, используя привязку, или выделите ячейки в таблице, а затем Таблица -> Выбрать -> Таблица
  5. Укажите количество строк, используя кнопку столбцов, или Формат -> Столбцы, если вы хотите больше контроля над размещением

Этот пример хорошо работает. Пост предлагает и другие возможности.

LarsTech
источник
4

Если у вас есть исходная таблица с именем «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, или операции по модулю в Википедии )

(Спасибо Джейку Качеру, за основную идею)

kicia
источник
1

Вы можете использовать простую формулу:

=OFFSET(Sheet1!$A$1,(ROW()-2)*5+COLUMN(),0)

чтобы данные проходили горизонтально в 5 столбцах.
Затем вы можете выбрать размер страницы, напечатать первый ряд на каждой странице и т. Д.
Простой, аккуратный, VBA не требуется.

Джейк Качер
источник
3
Вероятно, полезно для гуру Excel - но я понятия не имею, где бы я положил это или как его использовать.
Энтони Николс
1
Точно не выполняет то, что было запрошено, но, тем не менее, интересно. Если столбец A имел длинный ряд чисел, то, если вы скопировали эту формулу, чтобы сказать C, D, E, F, G, и перетащили ее на достаточное число строк, вы получите 5 более коротких столбцов данных. Данные перемещаются по пяти столбцам, хотя я ожидаю, что вы хотите, чтобы данные текли по каждому столбцу и проходили через них. Все-таки очень интересная компактная формула.
loneRanger
0

Самый простой способ, который я нашел, - это создать новый лист и просто воссоздать таблицу, разделив ее вручную на отдельные столбцы.

например, А1 =Sheet1!A1

B1 =Sheet1!B1

С1 =Sheet1!C1

D1 пусто (для разделительной колонки)

затем E1 =Sheet1!E51

F1 =Sheet1!B51

G1 =Sheet1!C51

И скопируйте это более 50 строк. Это затем превращает таблицу строк с одним столбцом 100 в таблицу строк с двумя столбцами 50. Отрегулируйте в соответствии с вашими потребностями.

Конечно, это вручную, и зависит от количества строк, оставшихся неизменными. Нетрудно динамически рассчитать количество требуемых строк, исходя из количества строк в исходной таблице и количества столбцов, которое вы хотите. Единственная проблема заключается в том, если исходная таблица выходит за рамки того, что уместится на одной странице, когда она разделена на столбцы на новом листе.

Дэйв Брэдшоу
источник
0

Если у вас есть Adobe Indesign, вы можете поместить в него файл Excel и с легкостью создать этот макет.

Игорь Фоменко
источник