零度带你飞关羽教学:如何在Excel里面实现折行打印

来源:百度文库 编辑:偶看新闻 时间:2024/05/09 09:25:45
 如何在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、按照构造的列排序。

  两分钟就搞定了!真是令人愉快啊。