Excel VBA-替换空白单元格
我必须用DN列同一行中的数据替换BM列中的每个空白单元格。 我曾写道:Excel VBA-替换空白单元格,excel,vba,excel-formula,Excel,Vba,Excel Formula,我必须用DN列同一行中的数据替换BM列中的每个空白单元格。 我曾写道: Columns("BM:BM").Select Selection.SpecialCells(xlCellTypeBlanks).Select Selection.FormulaR1C1 = "=DN2" 但在每个单元格中,“=DN2”的结尾类似于“=@'DN2'”。这是一个错误。 有人知道如何从同一行获取DN中的单元格吗 提前非常感谢 如果要R1C1,则使用公式R1C1 If Application.CountA(Act
Columns("BM:BM").Select
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.FormulaR1C1 = "=DN2"
但在每个单元格中,“=DN2”的结尾类似于“=@'DN2'”。这是一个错误。
有人知道如何从同一行获取DN中的单元格吗
提前非常感谢 如果要
R1C1
,则使用公式R1C1
If Application.CountA(ActiveSheet.Range("BM:BM"))<> ActiveSheet.Rows.Count Then
ActiveSheet.Range("BM:BM").SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=RC118"
End If
如果Application.CountA(ActiveSheet.Range(“BM:BM”))ActiveSheet.Rows.Count那么
ActiveSheet.Range(“BM:BM”).SpecialCells(xlCellTypeBlanks)。公式1C1=“=RC118”
如果结束
另一种方法
Dim rng As Range
On Error Resume Next
Set rng = Columns("BM:BM").SpecialCells(xlCellTypeBlanks)
On Error GoTo 0
If Not rng Is Nothing Then
rng.Formula = "=DN" & rng.Row
End If
顺便说一句,如果您使用的是
特殊单元格
,请使用错误处理,否则您的代码在找不到这些单元格时将崩溃这是我的两分钱。我会放弃在整个栏目中使用SpecialCells
的想法。如果要使用SpecialCells
,请至少在BM
列中创建一个范围
,以便首先使用它。如果任何列超过了感兴趣的行,您将在您真正不想要的位置(在您的例子中是公式)得到值
下面是一个跨越A1:C5
的小示例:
我们感兴趣的领域是列B:B
,其中,如果为空,我们需要列C:C
中的值
当我们使用SpecialCells
运行代码时,例如:
Columns("B:B").SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=RC3"
我们将以以下方式结束:
我们看到的是,SpecialCells
使用了UsedRange
(正如@Peh在评论部分正确提到的那样),因此在这样使用时是非常不可靠的。有一种风险,就是在你不想要值/公式的地方得到它们。我建议使用列C:C
(或者在您的情况下是DN
)中最后使用的行,然后从那里开始。因此,allready多个储蓄器将类似于:
.Range("BM1:BM" & <LastUsedRowOfDN>).SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=RC118"
.Range(“BM1:BM”和).SpecialCells(xlcelltypebanks).FormulaR1C1=“=RC118”
将.FormulaR1C1
更改为.Formula
您可能会从阅读中受益。正如@BigBen所述,可能会将公式更改为实际的R1C1
格式:“=RC118”
问题是您将R1C1和A1符号混合在一起。这是一整列中需要处理的大量内容。你确定你都需要吗?另外,您真的需要公式,或者更确切地说是值吗?换句话说,您是否需要这些公式并因此处理数据两次?@JvdV noSpecialCells
将限制为UsedRange
,因此它不会将所有行填充到底部。试一试。我给你10个代表你的两分钱:-)哈,这对10个代表来说相当便宜@BigBenEnglish很奇怪-我们有“这是我的两分钱”的表达,但也有“一分钱给你的想法”。显然我们无法计算出它的价值。