來源:互聯網網民 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、按照構造的列排序。
兩分鍾就搞定了!真是令人愉快啊。