Вот эквивалентный код VBA для подсчета количества ячеек, содержащих хотя бы одну строку
Sub StringCounter()
Dim r As Range, s As String, i As Long
s = "*string*"
For Each sh In Sheets
Set r = sh.Range("C2:C150")
i = i + Application.WorksheetFunction.CountIf(r, s)
Next sh
MsgBox i
End Sub
EDIT # 1:
Вот код для подсчета количества строк. Он будет считать несколько строк в одной ячейке:
Sub StringCounter_II_The_Sequel()
Dim r As Range, s As String, i As Long
Dim rr As Range, L As Long
s = "string"
L = Len(s)
For Each sh In Sheets
Set r = sh.Range("C2:C150")
For Each rr In r
txt = rr.Text
If InStr(txt, s) > 0 Then
i = i + (Len(txt) - Len(Replace(txt, s, ""))) / L
End If
Next rr
Next sh
MsgBox i
End Sub
EDIT # 2:
Математика работает следующим образом:
- скажем, есть три строки в ячейке, и количество символов в этой ячейке составляет 100
- замена удаляет все три экземпляра, и новая длина составляет 82
- результат вычитания в 18
- деление приводит к 3 (потому что длина строки слова 6 символов)