我有一个很大的范围,有各种重复的id。我想知道该范围内有多少个唯一ID,但我不想使用数据透视表。 This question是相关的,但没有答案。使用VBA有一种简单的方法吗?
我也看到了this,但它对我没用。
答案 0 :(得分:0)
您是否希望过滤列而不重复。之后,您可以使用小计函数。
Range("A:A").AdvancedFilter Action:=xlFilterInPlace, Unique:=True
Range("B2").Select
ActiveCell.FormulaR1C1 = "=SUBTOTAL(9,C[-1])"
此VBA过滤A列中的列表,选择单元格B2并在其中写入小计函数。我得到了"宏记录"。
的功能有帮助吗?
答案 1 :(得分:0)
使用Dictionary
对象加载唯一值,例如:
Sub CountUnique()
Dim oDictionary As Object
Dim rngData As Range
Dim nCounter As Integer
Set oDictionary = CreateObject("Scripting.Dictionary")
Set rngData = Range("A1:A10") 'Change the range to suit
nCounter = 0
For Each cel In rngData
If Not oDictionary.exists(cel.Value) Then
oDictionary.Add cel.Value, 0
nCounter = nCounter + 1
End If
Next cel
MsgBox nCounter
End Sub
答案 2 :(得分:0)
这是我发现的最简单方法:
Function Count_Uniques(cell_range As Range)
Dim n As Long
Dim cells1 As Range
Dim unique_count As Collection
Set unique_count = New Collection
On Error Resume Next
For Each cells1 In cell_range
unique_count.Add cells1.Value, CStr(cells1.Value)
Next cells1
On Error GoTo 0
Count_Uniques = unique_count.Count
End Function