工作中有时候需要将无重复的表转换为有重复的表。有很多方法,此处我们探讨使用VBA向下填充空白单元格的方法。
1.需求范例
公司要发工资条,个人存一份,公司留一份。将下表每行数据复制为2行。
2.基本思路
根据第一列单元格是否有数据进行判断:如果为空,则需要将前一行数据复制下来;如果不为空,则跳过。
3.VBA实现
Public Sub 向下填充空白单元格()
Dim wb As Workbook '工作簿变量
Dim ws As Worksheet '工作表变量
Dim i As Integer '循环变量
Set wb = Workbooks(1) '设置要操作的工作簿为当前激活的工作簿
Set ws = Worksheets("Sheet1") '设置要操作的工作表
ws.Activate '激活工作表
For i = 2 To 217 '表格含标题行,从第2行开始,到结束行
If Cells(i, 1).value = "" Then '已当前行第一列为依据判断,如果为空,则将上一行数据复制到当前行
Cells(i, 1).value = Cells(i - 1, 1).value
Cells(i, 2).value = Cells(i - 1, 2).value
Cells(i, 3).value = Cells(i - 1, 3).value
Else '首列单元格不为空,则当前行有数据,不做任何操作
'DoNothing
End If
Next i
Set ws = Nothing '释放工作表变量
Set wb = Nothing '释放工作簿变量
End Sub
4.运行效果
5.其他实现方法
选中要填充的区域和其上一行,CTRL+G -> 定位条件 -> 空值 ->确定 -> 在默认的第一个单元格输入"="->按向上箭头-> CTRL+ENTER -> Done.