如何在多列布局中打印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
. . .     . . .     . . .

Answers:


10

我认为Excel无法做到这一点。一个可能的解决方法是使用Microsoft Word并绕动各列:如何绕过各列以使用更少的页面

使用MS Word蛇列(#msword)

这可能是一次使用最容易的方法,因为我没有在稍后介绍的Excel宏中放入对话框。

  1. 从Excel电子表格中选择并复制列。
  2. 粘贴到Word中,这需要一些时间
  3. 选择要在表顶部重复的行,然后在Word中使用Table->要重复的行进行指示
  4. 使用锚点选择整个表,或选择表中的单元格,然后选择表->选择->表
  5. 如果要对放置进行更多控制,请使用“列”按钮或“格式->列”来指示行数

这个例子很好用。该帖子也提供了其他可能性。


4

如果您有一个称为“数据表”的源表,请将此公式放在每个单元格的额外工作表上(应在其中显示打印数据):

=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用于源“数据表”中的标题。如果没有标题,则应使用$A$1(而不是$A$2)引用。

细节:

第三个参数OFFSET(...;...;MOD(COLUMN()-1;3))列偏移量,它将始终引用源“数据表”的前三列之一。
那就是$A$2列偏移量0,1,2,0,1,2,0,1,2,...

在第二个参数中OFFSET(...; (ROW()-2) + ((COLUMN()-1-MOD(COLUMN()-1;3))/3*4) ;...)选择行偏移量
基本上,这里的数学是y + x * 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,...

(有关Modulo的说明,另请参阅MOD()excel帮助或Wikipedia中的模运算

(感谢Jake Kacher的基本想法)


1

您可以使用一个简单的公式:

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

使数据在5列中水平流动。
然后,您可以选择页面大小,在每页上打印第一行,等等。
简单,整洁,不需要VBA。


3
对于Excel Guru可能有用-但我不知道该放在哪里或如何使用它。
安东尼·尼科尔斯

1
并非完全按照要求执行,但仍然很有趣。如果A列中有很长的数字序列,那么如果您将此公式复制为C,D,E,F,G并向下拖动足够的数字行,您将获得5个较短的数据列。数据流经五列,而我希望您希望数据流经每一列并蜿蜒穿过。仍然,非常有趣的紧凑公式。
loneRanger

0

我找到的最简单的方法是创建一个新的工作表,然后简单地手动将表重新创建为单独的几列。

例如A1 =Sheet1!A1

B1 =Sheet1!B1

C1 =Sheet1!C1

D1空白(用于分隔符列)

然后是E1 =Sheet1!E51

F1 =Sheet1!B51

G1 =Sheet1!C51

并复制下来超过50行。然后,这会将单列100行表转换为2列50行表。调整以适合您的需求。

当然,这是手动的,并且取决于行数保持不变。从原始表中的行数和所需的列数动态计算所需的行数并不难。唯一的问题是,当原始表扩展为新表中的列时,其扩展范围是否超出单个页面的容纳范围。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.