【发布时间】:2016-11-29 16:56:14
【问题描述】:
我有一个电子表格,其中包含一个名为 NumberID 的列,其中包含大约 50k 条记录。我知道有重复,但是向上/向下滚动需要永远找到任何东西,而且经常 excel 有点慢。我正在尝试编写一个快速的 sn-p 代码,以便能够找到并计算重复的数量。
我正在尝试编写一种快速的方法,基本上我的数据是从第 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 上遇到错误 - 我发现此属性可用于完成我正在尝试做的事情。错误说
无法获取工作表函数类的匹配属性。
有人有想法吗?我的vba已经生锈了
【问题讨论】:
-
如果你唯一的问题是匹配错误,这可能是stackoverflow.com/questions/17751443/…的重复
-
@TJRockefeller - 代码看起来是否正常
-
您展示的所有内容都在使用 B 列,但您在匹配的第一个标准中的参考是使用 A 列。我建议将
Cells(iCntr, 1)都更改为Cells(iCntr, 2) -
@Bobski 我不确定你在最后的评论中说什么,但是用例是不同的,但我认为我放置链接的问题的答案本质上是答案你正在寻找。您需要使用 Application.Match 以便处理未找到匹配项的情况。
-
我不知道如何将其合并到我的代码中 - 该问题显示了针对相同问题但不同场景的解决方案
标签: vba excel worksheet-function