一個小問題:如果我有一個Excel表,列數非常的多(比如說有二十列),以至于在一張紙上橫著打不下,想折行打印,也就是把一行打成兩行,或者更多行,應該怎么做?(而且這個表非常大,不考慮純手工操作)
—— 先想后看 ————————
我的答案,用一個VBA來做一個復制。我對VBA不是很熟,尤其對于VBA復雜的對象體系感到頭暈,因此花了一天半的時間來看文檔,還翻了一本叫《Excel 2003高級VBA編程寶典》的書,才寫出這么幾句。VBA基本的語法其實不麻煩,麻煩還在于找到正確的對象和屬性?,F代語言似乎都是這樣?應用層面上體系比算法重要。
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、按照構造的列排序。
兩分鐘就搞定了!真是令人愉快啊。
新聞熱點
疑難解答