Excel 计算工作表中的特定字符数

Excel 计算工作表中的特定字符数,excel,vba,replace,count,find,Excel,Vba,Replace,Count,Find,我制作了一个宏来查找公式,并在找到值后粘贴到那里 例如,它找到vlookup,然后将单元格中的值更改为“粘贴特殊” 我想数一数Vlookup出现的次数。我把计数器设为300,但我怎么计算公式呢?我尝试使用countif,但它查看的是公式中没有的值 子测试 '查找特定文本或公式,并将其替换为值 将sht变暗为工作表 Dim-fnd作为变体 Dim-rplc作为变体 调光范围 作为整数的Dim计数器 fnd=“=VLOOKUP(” rplc=“测试” 第(1)页。激活 '转到第一页,否则它不会替换值

我制作了一个宏来查找公式,并在找到值后粘贴到那里

例如,它找到vlookup,然后将单元格中的值更改为“粘贴特殊”

我想数一数Vlookup出现的次数。我把计数器设为300,但我怎么计算公式呢?我尝试使用countif,但它查看的是公式中没有的值

子测试
'查找特定文本或公式,并将其替换为值
将sht变暗为工作表
Dim-fnd作为变体
Dim-rplc作为变体
调光范围
作为整数的Dim计数器
fnd=“=VLOOKUP(”
rplc=“测试”
第(1)页。激活
'转到第一页,否则它不会替换值
对于ActiveWorkbook.工作表中的每个sht
对于计数器=1到300
“我希望计数器是动态的,基于Vlookup公式的数量
设置Ra=sht.Cells.Find(What:=fnd,LookIn:=xlFormulas,LookAt:=xlPart_
SearchOrder:=xlByRows,SearchDirection:=xlNext,MatchCase:=_
False,SearchFormat:=False)
如果Ra什么都不是
MsgBox(“未找到移动到下一页”)
关于错误,请退出
'在没有剩余纸张的情况下查看最后一张纸张
工作表(ActiveSheet.Index+1)。选择
计数器=300
其他的
范围(Ra地址)。值=范围(Ra地址)
'将公式更改为值
如果结束
下一个
下一步
基特:
MsgBox“已完成”
端接头

我是这样理解的

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
选项显式
子测试_M()
'查找特定文本或公式,并将其替换为值
将sht变暗为工作表
Dim-fnd作为变体
调光范围
作为整数的Dim计数器
fnd=“=VLOOKUP(”
对于ActiveWorkbook.工作表中的每个sht
用短小的细胞
设置Ra=.Find(What:=fnd,LookIn:=xlFormulas,LookAt:=xlPart,SearchOrder:=xlByRows,SearchDirection:=xlNext,MatchCase:=_
False,SearchFormat:=False)
将地址设置为字符串
如果不是,那么Ra什么都不是
prevAddress=Ra.Address
做
Ra.Value=Ra.Value
计数器=计数器+1'跟踪更换VLOOKUP的频率
设置Ra=.FindNext(Ra)
如果Ra什么都不是
退出Do
如果结束
在Ra.Address之前循环
如果结束
以
'MsgBox(“未找到移动到下一页”)
下一步
MsgBox“已完成-计数器为”&计数器
端接头

非常感谢您如此迅速的回复。这比我的代码要好得多,使用此代码我甚至不需要计数器。我放置计数器的唯一目的是为了提高代码效率。如果这解决了您的问题,请将此答案标记为。在另一种情况下,请相应地编辑您的问题,因为我认为您也我想知道vlookup被替换的频率。我查找vlookup被使用的频率的目的是查找计数器的结束数字。我不知道find next命令。