| 订阅 | 在线投稿
分享
 
 
 

如何在Excel里面实现折行打印

来源:互联网  宽屏版  评论
2008-08-27 06:58:19

一个小问题:如果我有一个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、按照构造的列排序。

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

  一个小问题:如果我有一个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、按照构造的列排序。   两分钟就搞定了!真是令人愉快啊。
󰈣󰈤
 
 
 
>>返回首页<<
 
 热帖排行
 
 
王朝网络微信公众号
微信扫码关注本站公众号wangchaonetcn
 
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
©2005- 王朝网络 版权所有