先以上圖為例,來說明這次要解決的問題是什麼?
首先,若是純粹以上圖來看,它只不過是將上面的橫向資料 D1, D2, D3, D4,轉置成下面的縱向資料呈現。
若是這樣,只要將這一筆資料加以轉置,就可以完成。
現在,將問題加以擴大:
- 資料筆數繁多
- 需要轉置的資料區塊,長度不一。
這種情形,該如何處理,而且希望處理的動作,不要太慢!
解決方案:(想當然爾,程式處理才是上上策!!)
程式使用到的技巧:
- 插入空白行
- 資料轉置貼上(選擇性貼上/轉置),資料複製來源不可以和貼上的位置重疊!
- 資料的刪除
Dim srcRow As Long
Dim srcCol As Long
Dim intCnt As Integer
Dim strLoc As String
srcRow = ActiveCell().Row
srcCol = ActiveCell().Column
intCnt = 5
strLoc = "D"
Rows(srcRow + 1 & ":" & srcRow + intCnt - 1).Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove '插入空白行
Range(Chr(Asc(strLoc) + 1) & srcRow & ":" & Chr(Asc(strLoc) + intCnt - 1) & srcRow).Select ‘選定資料
Selection.Copy ‘複製
Range(strLoc & srcRow + 1).Select ‘移位到指定位置
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True '資料轉置貼上
Range(Chr(Asc(strLoc) + 1) & srcRow & ":" & Chr(Asc(strLoc) + intCnt - 1) & srcRow).Select '資料刪除
Selection.ClearContents
Range(strLoc & srcRow + intCnt).Select ‘移位到指定位置
沒有留言:
張貼留言