以下代码是if语句,但搜索结合在一起。例如,如果在D列中找到了单元格* BA $ 1的值(部分或全部,因此'搜索'而不是相等),则在col J中输入单元格$ AZ $ 1的内容。否则输入单元格的价值$ AY $ 1。如果满足第一个条件(例如$ AZ $ 1),我的VBA将正确返回,但是,它返回#Value!而不是$ AY $ 1中的值。 似乎没有语法错误,我已经尝试了各种编写这行代码的方法。你能看到问题在哪里吗?如果这还不够清楚,请告诉我。谢谢
With Sheets("XXXX")
With .Range("D2", .Cells(.Rows.Count, "D").End(xlUp)).Offset(0, 6)
.Formula = "=IF(SEARCH($BA$1, D2, 1),$AZ$1,$AY$1)"
End With
End With
答案 0 :(得分:0)
zero
不返回false
或IF(ISERROR(...),value-if-error,value-if-ok)
,则会返回错误。因此,匹配的适当测试应该是
使用.Formula = "=IF(ISERROR(SEARCH($BA$1, D2)),$AY$1,$AZ$1)"
' ^^^^^^^^ ^^^^^^^^^^^^
检查错误,但您需要撤消结果的顺序:
ISNUMBER
或使用 .Formula = "=IF(ISNUMBER(SEARCH($BA$1, D2)),$AZ$1,$AY$1)"
' ^^^^^^^^
检查搜索结果是否为数字。这不会改变结果的顺序。我通常更喜欢这个选项:
SEARCH
P.S。 1
的第三个参数(起始位置)默认为Persistence JPA2.1
,所以我省略了它。