一個(gè)小問(wèn)題:如果我有一個(gè)Excel表,列數非常的多(比如說(shuō)有二十列),以至于在一張紙上橫著(zhù)打不下,想折行打印,也就是把一行打成兩行,或者更多行,應該怎么做?(而且這個(gè)表非常大,不考慮純手工操作)
—— 先想后看 ————————
我的答案,用一個(gè)VBA來(lái)做一個(gè)復制。我對VBA不是很熟,尤其對于VBA復雜的對象體系感到頭暈,因此花了一天半的時(shí)間來(lái)看文檔,還翻了一本叫《Excel 2003高級VBA編程寶典》的書(shū),才寫(xiě)出這么幾句。VBA基本的語(yǔ)法其實(shí)不麻煩,麻煩還在于找到正確的對象和屬性?,F代語(yǔ)言似乎都是這樣?應用層面上體系比算法重要。
Sub SheetToPrint()
Application.ScreenUpdating = False
' 停止屏幕刷新
For i = 1 To Worksheets("Sheet1").Range("a1", Range("a65535").End(xlUp)).Count
' 這個(gè)是從第一行到最后一行的遍歷,VBA的這個(gè)寫(xiě)法是挺奇怪的。
Worksheets("Sheet1").Cells(i, 1).Copy Worksheets("Sheet2").Cells((i - 1) * 3 + 1, 1)
' 然后采用單元格對單元格的拷貝,以便于控制。雖然麻煩,其實(shí)復制一下就OK了。
' 省略單元格拷貝操作若干
Next i
Application.ScreenUpdating = True
End Sub
然后是丫頭的答案,不用Excel,只需要用排序就搞定了。丫頭真是聰明的不得了!步驟如下:
1、如果是折兩行的話(huà),構造一個(gè)包含1, 3, 5, … , 2n-1, 2, 4, 6, …, 2n 的列。 n和要拷貝的行數相同。
2、把要折行的兩部分前后分別拷貝到這個(gè)構造的列的后面。
3、按照構造的列排序。
兩分鐘就搞定了!真是令人愉快啊。
聯(lián)系客服