ppip: 流浪的天空

以群,以独

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

with 5 comments

  一个小问题:如果我有一个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. 我最近要找一个小型软件/网站的外包,工作量很小,但要求服务商比较稳定,能够提供长期持续的维护和升级。不知道谁有相关方面的信息?我在天津。

On this day/ 某年的这一天

Written by ppip

August 25th, 2008 at 9:03 pm

Posted in Computer/计算机

Tagged with

5 Responses to '如何在Excel里面实现折行打印?'

Subscribe to comments with RSS or TrackBack to '如何在Excel里面实现折行打印?'.

  1. 丫头的小聪明有时候确实让人惊讶
    不过大事糊涂啊,呵呵

    Reply

    else

    26 Aug 08 at 10:04

  2. 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

Leave a Reply

无觅相关文章插件,快速提升流量