如何在Excel里面实现折行打印?
一个小问题:如果我有一个Excel表,列数非常的多(比如说有二十列),以至于在一张纸上横着打不下,想折行打印,也就是把一行打成两行,或者更多行,应该怎么做?(而且这个表非常大,不考虑纯手工操作)
———————— 先想后看 ————————
我的答案,用一个VBA来做一个复制。我对VBA不是很熟,尤其对于VBA复杂的对象体系感到头晕,因此花了一天半的时间来看文档,还翻了一本叫《Excel 2003高级VBA编程宝典》的书,才写出这么几句。VBA基本的语法其实不麻烦,麻烦还在于找到正确的对象和属性。现代语言似乎都是这样?应用层面上体系比算法重要。
Sub SheetToPrint()
Application.ScreenUpdating = False
' 停止屏幕刷新
For i = 1 To Worksheets("Sheet1").Range("a1", Range("a65535").End(xlUp)).Count
' 这个是从第一行到最后一行的遍历,VBA的这个写法是挺奇怪的。
Worksheets("Sheet1").Cells(i, 1).Copy Worksheets("Sheet2").Cells((i - 1) * 3 + 1, 1)
' 然后采用单元格对单元格的拷贝,以便于控制。虽然麻烦,其实复制一下就OK了。
' 省略单元格拷贝操作若干
Next i
Application.ScreenUpdating = True
End Sub
然后是丫头的答案,不用Excel,只需要用排序就搞定了。丫头真是聪明的不得了!步骤如下:
1、如果是折两行的话,构造一个包含1, 3, 5, … , 2n-1, 2, 4, 6, …, 2n 的列。 n和要拷贝的行数相同。
2、把要折行的两部分前后分别拷贝到这个构造的列的后面。
3、按照构造的列排序。
两分钟就搞定了!真是令人愉快啊。
PS. 我最近要找一个小型软件/网站的外包,工作量很小,但要求服务商比较稳定,能够提供长期持续的维护和升级。不知道谁有相关方面的信息?我在天津。
- 周末:你的睡眠姿势? - 2007
- 历史和社会的负恩者 - 2004
- Why not MD? - 2004

丫头的小聪明有时候确实让人惊讶
不过大事糊涂啊,呵呵
Reply
else
26 Aug 08 at 10:04
Good。
下次有什么excel或者vba的问题可以问我:)
Reply
ppip reply on August 26th, 2008 13:19:
好啊,问一个问题:Excel怎么做行的拷贝?我没找到……Rows也不太对……
Reply
xkx reply on August 26th, 2008 16:24:
Rows(1).Copy
Range(Rows(1), Rows(5)).Copy
Selection.Copy
等等
Reply
xkx reply on August 26th, 2008 16:25:
然后
Rows(2).PasteSpecial …
xkx
26 Aug 08 at 12:55