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