单元格公式内的VBA部分字符串CountIf(不是值)

时间:2018-12-13 05:07:53

标签: excel vba excel-vba excel-formula excel-2010

所以我有一个工作表,其中有一堆链接单元设置为UNC路径。例如,假设单元格A1等于:

='\\corp\StackOverflow\[Example01.xlsx]TestSheet'!$A$1

并且单元格A2等于:

='\\corp\StackOverflow\[Example02.xlsx]TestSheet'!$A$1

是否可以为整个工作表的一部分“ StackOverflow”使用CountIf?它将返回2。

Sub Search()
    Dim r As Range, s As String, i As Long
    Dim ws As Worksheet

    s = "StackOverflow"

        For Each ws In ActiveWorkbook.Worksheets
            Set r = ws.Cells
            i = Application.WorksheetFunction.CountIf(r, "*" & s & "*")
            MsgBox ("i: " & i)
        Next ws
End Sub

这是我正在使用的内容,但它始终返回0,因为我认为它仅查看值。我希望它查看公式的内部(即使该单元格通常返回#REF!错误)。是的,如果它可以查看整个工作表的单元格,因为我想在For Each ws的基础上使用它。

1 个答案:

答案 0 :(得分:0)

可以在公式单元格的文本中搜索特定的字符串并增加计数器。

Sub Search()
    Dim r As Range, s As String, i As Long
    Dim ws As Worksheet

    s = lcase("StackOverflow")

        For Each ws In ActiveWorkbook.Worksheets
            For Each rng In ws.Cells.SpecialCells(xlCellTypeFormulas)
                If LCase(rng.Formula) Like "*" & s & "*" Then i = i + 1
            Next
        Next ws
        MsgBox ("i: " & i)
End Sub