![搜索公式的字符串](https://linux22.com/image/1546954/%E6%90%9C%E7%B4%A2%E5%85%AC%E5%BC%8F%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2.png)
是否有类似于搜索的功能,可以在公式中搜索,而不是显示的单元格内容?例如能够在 中找到“myWorksheet” ='myWorksheet'!$A$1
。我需要一个实际的公式,而不是使用显示公式。
我可以很容易地在 VBA 中创建一个,但很好奇是否有一个现成的,而我的 Google-Fu 让我失望了。
答案1
没有 Excel 工作表函数可以做到这一点。Find() 和 Search() 都将评估单元格的值,而不是其底层公式。
查找/替换命令(Ctrl-F 或 Ctrl-H)有在公式中搜索的选项,但它只会找到包含搜索词的单元格,而不是单元格内搜索词的位置。
答案2
由于 teylyn 已确认不存在内置函数,因此我创建了自己的函数,我将在此分享,以防有人使用它。将其放在启用宏的工作簿的代码模块中,并以与搜索相同的方式使用它。如果单元格公式有,它将搜索该公式;如果没有,它将搜索单元格值;如果未找到匹配项,则返回 -1:
Function SearchFormula(rng As Range, val As String) As Integer
Dim f As String
Dim pos As Integer
f = rng.Formula
If f <> "" Then
pos = InStr(1, f, val)
If pos = 0 Then pos = -1
Else
pos = -1
End If
SearchFormula = pos
End Function