首页 > 解决方案 > 尝试填写时显示为非空的空单元格

问题描述

我有一个包含 3 列的 Excel 文件,前 2 列连接到第 3 列。

然后我运行这个 VBA 以使空单元格等于上面填充的单元格。

Sub fillempty()


With Selection.SpecialCells(xlCellTypeBlanks)
.FormulaR1C1 = "=R[-1]C"
.Value = .Value
End With
End Sub

说没有空单元格,尽管可见空。因此,如果我采用所谓的非空单元格但可见空且清晰的内容并再次运行 VBA,它确实会填充。

出现问题是因为我有数十万个值。

如果我为第一列或第二列独立运行 VBA,但不是为串联的。肉眼看来,有些单元格是空的,但除非清除它们的内容,否则脚本将无法工作......

C2 = IF(A2 <> "", CONCATENATE(A2, B2), "")然后将其拖下数十万个值

任何帮助将不胜感激。谢谢

标签: excelvba

解决方案


Dim c As Range

For Each c in Selection.Cells
    if Len(Trim(c.value))=0 Then c.value=c.offset(-1,0).value
Next c

或更快,只要您不需要保留任何公式:

Dim r as long, c as long, data, cols as long
data = selection.value
cols = ubound(data, 2)
for r=2 to ubound(data, 1)
    for c = 1 to cols
        if Len(Trim(data(r, c))) = 0 Then data(r, c) = data(r-1, c)
    next c
next r

selection.Value = data

推荐阅读