Подсчитать определенный символ в листе - PullRequest
0 голосов
/ 09 ноября 2019

У меня есть созданный макрос, чтобы найти формулу и вставить туда значения, как только его найти

. Например, он находит vlookup, а затем изменяет значения в ячейке, чтобы вставить специальные

Толькопроблема в том, что я не могу указать количество раз, которое Vlookup появляется. На данный момент я установил счетчик на 300, но, пожалуйста, дайте мне знать, если я могу посчитать формулу. Я пытался использовать countif, но он смотрит на значение не в формуле

Sub Test_M()

' Find a particular text or Formula and replace it with values

Dim sht As Worksheet
Dim fnd As Variant
Dim rplc As Variant
Dim Ra As Range
Dim counter As Integer

fnd = "=VLOOKUP("
rplc = "Test"

Sheets(1).Activate

' Goes to first sheet otherwise it was not replacing the values


For Each sht In ActiveWorkbook.Worksheets
               For counter = 1 To 300
' I want counter to be dynamic based on the numbers of Vlookup formulas


  Set Ra = sht.Cells.Find(What:=fnd, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False)

        If Ra Is Nothing Then
                MsgBox ("Not found Moving to next sheet")

                On Error GoTo QUITIT
                'For the Last sheet when there is no sheets left

                Worksheets(ActiveSheet.Index + 1).Select
                counter = 300

                Else
                    Range(Ra.Address).Value = Range(Ra.Address)
                    ' Changes Formula to Values
        End If
    Next

Next sht


QUITIT:

MsgBox "Completed"
End Sub

Если кто-то может помочь мне найти код счетчика, я буду очень рад

Спасибо

1 Ответ

0 голосов
/ 09 ноября 2019

Я так понял

Option Explicit

Sub Test_M()

    ' Find a particular text or Formula and replace it with values

    Dim sht As Worksheet
    Dim fnd As Variant
    Dim Ra As Range
    Dim counter As Integer

    fnd = "=VLOOKUP("

    For Each sht In ActiveWorkbook.Worksheets

        With sht.Cells
            Set Ra = .Find(What:=fnd, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
                False, SearchFormat:=False)

            Dim prevAddress As String
            If Not Ra Is Nothing Then
                prevAddress = Ra.Address
                Do
                    Ra.Value = Ra.Value
                    counter = counter + 1  ' Keeping track how often VLOOKUP was replaced
                    Set Ra = .FindNext(Ra)
                    If Ra Is Nothing Then
                        Exit Do
                    End If
                Loop While Ra.Address <> prevAddress
            End If
        End With
        'MsgBox ("Not found Moving to next sheet")

    Next sht

    MsgBox "Completed - Counter is " & counter

End Sub
...