11

В моем листе 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
. . .     . . .     . . .

5 ответов5

10

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

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

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

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

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

3

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

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

1

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

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

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

0

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

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

B1 =Sheet1!B1

C1 =Sheet1!C1

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

тогда E1 =Sheet1!E51

F1 =Sheet1!B51

G1 =Sheet1!C51

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

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

0

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .