gpt4 book ai didi

vba - 查找并计算重复项的数量

转载 作者:行者123 更新时间:2023-12-03 00:22:11 27 4
gpt4 key购买 nike

我有一个电子表格,其中有一列名为 NumberID 的列,其中包含大约 50k 条记录。我知道有重复项,但是向上/向下滚动需要很长时间才能找到任何内容,而且 Excel 通常速度有点慢。我正在尝试编写一个快速的代码片段,以便能够查找并计算重复项的数量。

我正在尝试编写一种快速的方法来执行此操作,基本上我的数据是从第 20 行到第 48210 行,并且我正在尝试查找重复记录的总数。

Dim lastRow As Long
Dim matchFoundIndex As Long
Dim iCntr As Long
Dim count As Long
count = 0
lastRow = Range("B48210").End(xlUp).Row
For iCntr = 1 To lastRow
If Cells(iCntr, 1) <> "" Then
matchFoundIndex = WorksheetFunction.Match(Cells(iCntr, 1), Range("B20:B" & lastRow), 0)
If iCntr <> matchFoundIndex Then
count = count + 1
End If
End If
Next

MsgBox count

这里我在 = WorkSheetFunction.Match 上遇到错误 - 我发现这个属性可以用来完成我想要做的事情。错误说

Unable to get the match property for the worksheetfunction class.

有人有想法吗?我的vba已经生锈了

最佳答案

使用 Match 来处理这么多行的效率非常低。我会用找到的项目填充 Dictionary 并测试一下您以前是否见过它们:

'Add a reference to Microsoft Scripting Runtime.
Public Sub DupCount()
Dim count As Long
With New Scripting.Dictionary
Dim lastRow As Long
lastRow = Range("B48210").End(xlUp).Row
Dim i As Long
For i = 1 To lastRow
Dim test As Variant
test = Cells(i, 2).Value
If IsError(test) Then
ElseIf test <> vbNullString Then
If .Exists(test) Then
count = count + 1
Else
.Add test, vbNull
End If
End If
Next
End With
MsgBox count
End Sub

关于vba - 查找并计算重复项的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40871463/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com