返回列表 上一主題 發帖

合併多個工作表內資料於新增1工作表

簡化一下
  1. Sub Ex()
  2.     Dim Sh As Worksheet, i%, iRowEnd%, Ar()
  3.     With Sheets("合併")
  4.         .Move Sheets(1)                      '工作表移到最前面
  5.         .UsedRange.Offset(1).ClearContents   '使用範圍第2列開始清除
  6.         For i = 2 To Sheets.Count            '工作表索引2開始的迴圈
  7.             iRowEnd = Sheets(i).Cells(Rows.Count, 1).End(xlUp).Row
  8.             Ar = Sheets(i).Range("A2:B" & iRowEnd).Value                                            '取得資料
  9.             .Range("A" & Rows.Count).End(xlUp).Offset(1).Resize(UBound(Ar), 2) = Ar                 '置入資料
  10.             .Range("C" & Rows.Count).End(xlUp).Offset(1).Resize(UBound(Ar), 1) = Sheets(i).Name     '置入工作表名稱
  11.         Next
  12.     End With
  13. End Sub
複製代碼

TOP

本帖最後由 GBKEE 於 2011-7-13 09:28 編輯

回復 6# Happkkevin
iRowEnd = Sheets(i).Cells(Rows.Count, 1).End(xlUp).Row的意義為何?
A: iRowEnd =Sheets(i).A65536往上到有資料儲存格的列號
i  ->工作表的索引值
Rows.Count  列的計數(總數)    2003為 65536   
End 屬性      傳回 Range 物件,該物件代表包含來源範圍之區域結尾處的儲存格。等於按 END+向上鍵(XlUp)、END+向下鍵(XlDown)、END+向左鍵    (XlToLeft)或 END+向右鍵(XlToRight)。唯讀 Range 物件。
Row
->列號

關於  Ar = Sheets(i).Range("A2:B" & iRowEnd).Value 中的 Range ("A2:B" & iRowEnd)的意思是?
A: 如  iRowEnd=100     Range ("A2:B" & iRowEnd) -> Range ("A2:B100")

TOP

回復 8# Happkkevin
UBound 函數   傳回 Long值,表示指定陣列某維最大可使用的陣列索引。
Dim A(1 To 100, 0 To 3, -3 To 4)   
陳述式 傳回值
UBound(A, 1) -> UBound(A) -> 100
UBound(A, 2)  ->3
UBound(A, 3)  ->4

TOP

        靜思自在 : 做好事不能少我一人,做壞事不能多我一人。
返回列表 上一主題