| 導購 | 订阅 | 在线投稿
分享
 
 
 

如何在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- 王朝網路 版權所有