我們還是以錄製宏的方式開始瞭解Range對象的FillDown方法。
如下圖所示的操作:
Sub Macro1()
ActiveCell.FormulaR1C1 = '1'
Range('A1:A5').Select
Selection.FillDown
End Sub
從代碼中可以看出,VBA使用了FillDown方法對所選單元格區域進行向下填充。
熟悉VBA的朋友可以將上述代碼簡化如下,達到同樣的效果。
Sub testFillDown1()
Range('A1').Value = 1
Range('A1:A5').FillDown
End Sub
再看一個示例。如下圖左側所示的工作表,要求填充單元格區域E1:F5。
代碼如下
Sub testFillDown2()
Range('E1:F5').FillDown
End Sub
FillDown方法的官方說明
從指定單元格區域內的頂部單元格或單元格區域填充到單元格區域底部。單元格區域頂行中的單元格或單元格區域的內容和格式將複製到該區域內的其餘行中。
FillDown方法的語法
Range對象.FillDown
說明:
FillDown方法不僅向下填充內容,而且還複製格式。
要想不帶格式填充,可以使用AutoFill方法。
示例1:自動填充公式
如下圖所示的工作表,要求計算合價,即列C與列D的乘積值。
代碼如下
Sub testFillDown3()
'在E2中輸入公式
Range('E2').Formula ='=C2*D2'
'從E2起向下填充公式至E7
Range('E2:E7').FillDown
End Sub
示例2:用空單元格上方的單元格數據填充單元格區域中的空單元格
需要填充工作表中的空單元格,使用空單元格上一行的非空單元格內容填充。
sub test()
Dim rngBlank As Range, rngArea As Range
'填充空白單元格
Set rngBlank = Range("a:b").SpecialCells(xlCellTypeBlanks)
For Each rngArea In rngBlank.Areas
'用空白單元格上方數據填充
rngArea.Cells(1, 1).Offset(-1, 0). _
Resize(rngArea.Rows.Count + 1, rngArea.Columns.Count).FillDown
Next rngArea
End sub
rngArea.Cells(1, 1).Offset(-1, 0)表示從區域的第一個單元格向上偏移1行的單元格。
Resize(rngArea.Rows.Count 1, rngArea.Columns.Count)表示擴展單元格,其行數爲區域的行數加1,即要包含區域之上的單元格,列數爲區域的列數。
與FillDown方法類似的方法
除向下填充的FillDown方法外,還有向上填充、向左填充、向右填充,分別對應着FillUp方法、FillLeft方法、FillRight方法。
FillUP方法從指定單元格區域的底部單元格或單元格區域填充到單元格區域的頂部。區域底行中的單元格或單元格區域的內容和格式被複制到該區域內的其餘行。
FillLeft方法從指定單元格區域的最右側的單元格或單元格區域向左填充。區域的最右列中的單元格或單元格區域的內容和格式被複制到該區域的其餘列中。
FillRight方法從指定單元格區域內的最左側的單元格或單元格區域向右填充。區域的最左列中的單元格或單元格區域的內容和格式被複制到該區域的其餘列中。