Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 宏查找空白单元格并替换_Excel_Vba - Fatal编程技术网

Excel 宏查找空白单元格并替换

Excel 宏查找空白单元格并替换,excel,vba,Excel,Vba,我有两列数据,A和B。我想在B列中找到空白单元格,然后从A列中的相应单元格复制数据,如果A列不是空白的。我会使用特殊单元格: Sub fillblanks() Dim rngBlanks As Range Dim rng As Range Dim cl As Range Set rng = ActiveSheet.UsedRange.Columns(2) Set rngBlanks = rng.SpecialCells(xlCellTypeBlanks) For Each cl In rngB

我有两列数据,A和B。我想在B列中找到空白单元格,然后从A列中的相应单元格复制数据,如果A列不是空白的。

我会使用特殊单元格:

Sub fillblanks()
Dim rngBlanks As Range
Dim rng As Range
Dim cl As Range

Set rng = ActiveSheet.UsedRange.Columns(2)
Set rngBlanks = rng.SpecialCells(xlCellTypeBlanks)
For Each cl In rngBlanks.Cells
    With cl
        If (.Value = "") And (.Offset(0, -1).Value <> "") Then
            .Value = .Offset(0, -1).Value
        End If
    End With
Next

End Sub

这并不完全符合您的要求,就像如果a中的单元格为空白,则不会跳过空白单元格一样,这是因为我不明白为什么用另一个空白替换和空白将是一个问题。如果是的话,只需修改.FormulaR1C1==RC[-1]以考虑空格,就可以很容易地解决问题。

不需要VBA。选择栏B,主页>编辑,查找并选择,转到特殊…,仅选择空白

=  

←, Ctrl+Enter

如果你将a中的空白单元格复制到B中的空白单元格,真的会有问题吗?不-我只是不想在B中的内容已经存在的情况下覆盖它。Fun,玩我的答案与你的答案的游戏,我想我会通过删除检查偏移中空白的行来检查你的代码,这实际上会使你的sub速度降低近33%。这是有意义的,因为检查比修改单元格快得多。但我没有意识到这会让它慢下来33%。我不确定你写的时候是否知道它会更快,或者你只是在遵循Askers的指导原则,但我发现它很有趣。如果您有兴趣使用示例工作簿,我将上载该示例工作簿。我已先发制人地上载了示例工作簿。我只是按照指南进行操作,甚至没有考虑性能,但这是有意义的-对工作表对象的任何更改都是耗时的。让我困惑的是,它修改了整个列,比您的列快了两倍,大约285%,尽管您会对结果感兴趣。您只需调用ColumnsB.SpecialCellsXLTypeBlanks范围对象一次。我正在打多个电话,即每个cl范围。从技术上讲,我认为您只执行了两个操作。公式1c1和Value,而我的是执行一个操作。Value但是多次。
=