Excel VBA - 计算表中不同参数的数量

时间:2014-09-10 11:53:49

标签: excel vba excel-vba count

我的excel VBA代码有些问题,它不起作用,是的,我不知道为什么......

Data table

我想在集合中添加一次记录编号。我的代码如下所示:

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

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

如果你能帮助我们,那就太好了!

2 个答案:

答案 0 :(得分:2)

如果你给它一个键,就没有必要测试Collection以查看该项是否存在。 您可以编写类似的代码:

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

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

答案 1 :(得分:0)

我无法通过对lo的引用来测试它,但它适用于对范围的引用

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)