Excel VBA单元格文本提取公式引用异常问题求助
问题分析与解决
你的VBA代码存在一个关键错误:SEARCH函数的查找文本里多了不必要的空格。
工作表中正常运行的公式用的是SEARCH("/", B6),但你的VBA代码里写的是SEARCH("" / "", ...),这会让最终生成的单元格公式变成SEARCH(" / ", ...)——也就是要查找带前后空格的/,而你单元格B6的内容是ABC/1000/CE,里面的/前后并没有空格,所以SEARCH找不到匹配项,ISNUMBER返回FALSE,公式就执行了else分支,直接返回原单元格内容。而B5里没有/,不管有没有空格,SEARCH都找不到匹配,同样执行else分支显示原内容,所以看起来正常。
修正后的VBA代码
把SEARCH里的空格去掉,修改后的代码如下:
ws.Cells(i, "N").Formula = "=IF(ISNUMBER(SEARCH(""/"", INDIRECT(""" & cellAddress & """))), LEFT(INDIRECT(""" & cellAddress & """), SEARCH(""/"", INDIRECT(""" & cellAddress & """)) - 1) & ""/"", INDIRECT(""" & cellAddress & """))"
另外,你可以去掉INDIRECT,直接用单元格地址拼接,代码会更简洁(假设cellAddress是类似"B6"的字符串):
ws.Cells(i, "N").Formula = "=IF(ISNUMBER(SEARCH(""/"", " & cellAddress & ")), LEFT(" & cellAddress & ", SEARCH(""/"", " & cellAddress & ") - 1) & ""/"", " & cellAddress & ")"
内容的提问来源于stack exchange,提问作者pradeep
相关产品推荐
相关产品推荐

