返回在搜索中完成的替换数量&;在Excel中替换

返回在搜索中完成的替换数量&;在Excel中替换,excel,vba,Excel,Vba,我试图在数千个条目的列表中找到前十名,以创建一个持续的硬件故障报告。该报告显示了各种事物的前10名。例如,前10个错误、前10个停机时间等。它用于将工程师定位到制造设施中最关键的机器 当我们有255个错误时,我们的宏工作正常。现在,我们已经将错误列表扩展到2048年,我们预计宏的运行速度将非常慢 我有一个利用搜索和替换功能的想法,并利用替换数量实现前10名。手动显示一个给出此号码的消息框。录制此宏时,没有看到任何消息框(这很好),但我找不到号码所在的位置 该函数返回一个布尔值 宏记录看起来像这样

我试图在数千个条目的列表中找到前十名,以创建一个持续的硬件故障报告。该报告显示了各种事物的前10名。例如,前10个错误、前10个停机时间等。它用于将工程师定位到制造设施中最关键的机器

当我们有255个错误时,我们的宏工作正常。现在,我们已经将错误列表扩展到2048年,我们预计宏的运行速度将非常慢

我有一个利用搜索和替换功能的想法,并利用替换数量实现前10名。手动显示一个给出此号码的消息框。录制此宏时,没有看到任何消息框(这很好),但我找不到号码所在的位置

该函数返回一个布尔值

宏记录看起来像这样

Sub searchmacrotest()

' searchmacrotest Macro
    Cells.Replace What:="a", Replacement:="AZ", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    Cells.Replace What:="AZ", Replacement:="a", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

End Sub

第一行只是将a更改为Az,第二行将其更改回a。他们跑得很快,在我的列表中给出了75个数字。

逻辑

  • 使用唯一的单词替换。选择时,请确保该词不可能出现
  • 使用
    Countif
    统计替换后此唯一单词的出现次数
  • 代码:试试这个

    Sub GetReplaceCount()
        Dim ws As Worksheet
    
        '~~> Set this to a word which is unique
        Dim magicword As String: magicword = "Sid" & Format(Now, ddmmyyhhmmss)
    
        '~~> This is what you want to replace
        Dim searchText As String: searchText = "a"
    
        Set ws = ThisWorkbook.Sheets("Sheet1")
    
        With ws
            .Cells.Replace What:=searchText, Replacement:=magicword, LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    
            '~~> This will give you the number of occurences
            Debug.Print Application.WorksheetFunction.CountIf(.UsedRange, "*" & magicword & "*")
    
            .Cells.Replace What:=magicword, Replacement:=searchText, LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
        End With
    End Sub
    

    我喜欢这个,尼斯,简单遵循接吻原则,看起来它会起作用。非常感谢你