Excel VBA:填充——FillDown方法

我们还是以录制宏的方式开始了解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方法从指定单元格区域内的最左侧的单元格或单元格区域向右填充。区域的最左列中的单元格或单元格区域的内容和格式被复制到该区域的其余列中。

  • 9
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值