![如何替换以下脚本来搜索值而不是字符串?](https://linux22.com/image/1484422/%E5%A6%82%E4%BD%95%E6%9B%BF%E6%8D%A2%E4%BB%A5%E4%B8%8B%E8%84%9A%E6%9C%AC%E6%9D%A5%E6%90%9C%E7%B4%A2%E5%80%BC%E8%80%8C%E4%B8%8D%E6%98%AF%E5%AD%97%E7%AC%A6%E4%B8%B2%EF%BC%9F.png)
我有以下宏,它迭代指定列中的每个单元格。如果单元格包含字符串的值#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!”检查来说,比较完整的字符串也是一个更好的解决方案。