我们还是以录制宏的方式开始了解Range对象的FillDown方法。
如下图所示的操作:
录制的宏代码如下:
Sub Macro1()
'
' Macro1Macro
' 由完美Excel创建
'
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方法超出字符数上限
翻译更多
从指定单元格区域内的顶部单元格或单元格区域填充到单元格区域底部。单元格区域顶行中的单元格或单元格区域的内容和格式将复制到该区域内的其余行中。
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:用空单元格上方的单元格数据填充单元格区域中的空单元格
看看下面的图,是不是觉得有点熟悉?不错,与示例1一样,这也是前面的文章中我们列举的一个例子,即在《Excel VBA解读(56):在VBA中使用公式2——FormulaArray属性及相关属性》中的《示例2:快速填充单元格区域中的空单元格》。
要求如下:需要填充工作表中的空单元格,使用空单元格上一行的非空单元格内容填充。
我们使用FillDown方法解决,代码如下:
说明:
有关CurrentRegion属性的用法请参见《ExcelVBA解读(38):快速确定自已的地盘——CurrentRegion属性》。
有关SpecialCells方法的用法请参见《ExcelVBA解读(43):快速定位到特定的单元格——SpecialCells方法》。
有关Areas集合的用法请参见《ExcelVBA解读(46):选取非连续的单元格区域—Areas集合》。
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方法从指定单元格区域内的最左侧的单元格或单元格区域向右填充。区域的最左列中的单元格或单元格区域的内容和格式被复制到该区域的其余列中。
如果您对本文介绍的内容还有什么好的示例,欢迎发送邮件给我:xhdsxfjy@163.com
也可以在本文下方留言,提出您的看法或建议。
本文属原创文章,转载请联系我或者注明出处。
联系客服