Частичная строка VBA CountIf внутри формул ячеек (не значений) - PullRequest
0 голосов
/ 13 декабря 2018

Итак, у меня есть рабочий лист со связанными ячейками, установленными на путь UNC.Например, допустим, что ячейка A1 равна:

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

, а ячейка A2 равна:

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

Есть ли способ использовать CountIf для частичной строки«StackOverflow» для всего листа?Он вернул бы 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 голосов
/ 13 декабря 2018

Можно найти в тексте ячеек формулы определенную строку и увеличить счетчик.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...