Excel VBA – 统计表中不同参数的个数

我用我的Excel VBA代码有一些问题,它不工作,是的,我不知道为什么…

数据表

我想在集合中添加每个logging编号。 我的代码如下所示:

For i = 1 To lo.ListRows.Count Count = 1 Do While recordList.Count >= Count recordFound = False If lo.ListColumns("Record").DataBodyRange.Rows(i) = recordList(Count) Then recordFound = True End If If recordFound = False Then recordList.Add (lo.ListColumns("Record").DataBodyRange.Rows(i)) End If Count = Count + 1 Loop Next 

它现在做什么,它返回空集合…

如果你能帮助我,那该多好!

没有真正的需要testing集合,看看如果项目存在,如果你给它一个关键。 你可以编写如下代码:

 On Error Resume Next For I = 1 To lo.ListRows.Count With lo.ListColumns("Record").DataBodyRange.Rows(I) RecordList.Add Item:=.Value, Key:=CStr(.Value) End With Next I On Error GoTo 0 

使用相同的键添加项目会导致操作被拒绝。 如果您担心重复键错误以外的其他错误,则可以随时根据结果检查内联代码和分支中的错误编号。

我一直没有能够testing这与参考罗,但它的作品与范围的参考

 Dim objDictionary As Object Dim dictionaryKey As Variant Dim i As Long Set objDictionary = CreateObject("Scripting.Dictionary") For i = 1 To lo.ListRows objDictionary.Item(CStr(lo.ListColumns("Record").DataBodyRange.Rows(i))) = objDictionary.Item(CStr(lo.ListColumns("Record").DataBodyRange.Rows(i))) + 1 Next i For Each dictionaryKey In objDictionary.keys ' Do something Next dictionaryKey 

我已经使用了一个字典对象,而不是一个普通的集合对象,因为它应该做你正在做的事情。 由于每次增加项目,您也可以使用返回每个项目的计数

 objDictionary.item(dictionaryKey)