2014年5月28日 星期三

[Excel Macro 巨集] 自動填滿

操作 Excel 表格時,常常利用在格子右下角出現十字時,點兩下,下面的格子就會自動填滿公式或數值到與左邊格子一樣的列數,相同的操作,若使用 Macro 錄製功能,就會產生與下面類似的程式碼,用 Range 去指定自動填滿的範圍。

-----------------------------------
Sub Macro1()
    Range("C2").Select
    Selection.Autofill Destination:=Range("C2:C11")
End Sub
-----------------------------------

但是,很多時候,每個檔案的資料數量不同,即使是相同格式的表格,要執行自動填滿的範圍也不同,若要成功執行自動填滿所有資料,就需要每次改程式碼的範圍,這時候就可以使用下面的程式碼,來解決這個問題 (紅色部分隨著資料表格式不同修改)

-----------------------------------
  1. Sub Autofill()
  2. Dim lastRow1 As Long
  3. lastRow1 = Range("A" & Rows.Count).End(xlUp).Row     
  4.     With Range("C2")
  5.     .Autofill Destination:=Range("C2:C" & lastRow1)
  6.     End With
  7. End Sub
-----------------------------------

第三行 Range("A" & Rows.Count) 裡面的 A是指 Excel 表格的 A 欄,資料表 A 欄通常是項目 (No.),因此這邊小莎用 A 欄來數要自動填滿的列數,若是你的資料表是要用 F 欄當參考欄,就只要把 A 改成 F 就好。

第四行 Range("C2") 裡的 C2 就是你要自動填滿的第一格,手動操作自動填滿時,我們會在這個格子右下方按兩下,在這邊就只要把格子的位置填上去。

第五行 .Autofill Destination:=Range("C2:C" & lastRow1) 表示自動填滿的範圍,與錄製的程式碼不同的地方,這個程式會去判斷資料數量來決定自動填滿範圍,我們只要指定要自動填滿的欄就可以。

沒有留言: