我有以下宏,它迭代指定列中的每个单元格。如果单元格包含字符串的值#VALUE!
,则将其替换为其上方和下方 2 个单元格(包含整数)的平均值。
Sub Checker()
Dim Qty As Range
For Each Qty In Range("A1:A5").Cells
If InStr(1, (Qty.Text), "#VALUE!") Then
Qty.FormulaR1C1 = "=AVERAGE(R[-2]C:R[-1]C,R[1]C:R[2]C)"
End If
Next
End Sub
所以:
A A
1 10 1 10
2 10 2 10
3 #VALUE! -> 3 10
4 10 4 10
5 10 5 10
现在我想要宏来搜索0
而不是#VALUE!
。
A A
1 10 1 10
2 10 2 10
3 0 -> 3 10
4 10 4 10
5 10 5 10
我需要在代码中替换什么?
简单地替换"#VALUE!"
为"0"
不起作用。我猜是使用另一个函数代替,InStr
但我对 VBA 不太熟悉。
答案1
If InStr(1, (Qty.Text), "0") Then
将检查字符串中是否有“0”,这可能不是您想要的。尝试
If Qty.Text = "0" Then
或者
If StrComp(Qty.Text, "0") = 0 Then
检查完整字符串是否为“0”。
对于“#VALUE!”检查来说,比较完整的字符串也是一个更好的解决方案。