VBA快速填充缺失数据
2023-12-15 14:54:03
实例需求:数据表中F列中存在数据缺失,如下图所示。现需要根据A列中的内容(类别,图中C1、C2、B1为不同类别),补充F列数据,已知每个类别中F列存在不少于一个非空单元格,并且其内容相同。
示例代码如下。
Sub Demo()
Dim rngF As Range, arrData, i As Long
Dim RowCnt As Long
arrData = [a1].CurrentRegion.Value
RowCnt = UBound(arrData)
For i = 2 To RowCnt
If arrData(i, 1) <> arrData(i - 1, 1) Then
If Len(arrData(i, 6)) = 0 Then
Cells(i, 6) = Cells(i, 6).End(xlDown)
End If
End If
Next
With Range("F2").Resize(RowCnt - 1, 1)
.NumberFormatLocal = "G/通用格式"
.SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C"
.Formula = .Value
End With
End Sub
【代码解析】
第4行代码将数据表加载到数组中。
第5行代码获取数据表的行数。
第6~12行代码从第二行开始循环遍历数据,确保每个类别的首行记录F列不为空,这样才能确保后续公式填充的结果是正确的。
如果当前行A列单元格不等于上一行A列单元格,则为一个新类别的首行数据记录,第8行代码判断其F列是否为空,如果为空,第9行代码使用当前行之下的第一个非空单元格填充当前行单元格。
第14行代码设置单元格区域数字格式为通用。
第15行代码使用SpecialCells(xlCellTypeBlanks)
筛选数据表中F列的空白单元格,并设置公式为等于其上的相邻单元格。
第16行代码将F列中的公式转换为静态数值。
使用数组+字典的方式也可以实现本需求,本文只是展示另外一个实现思路。
文章来源:https://blog.csdn.net/taller_2000/article/details/135015408
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!