VBA Excel比较行

时间:2012-08-24 13:35:51

标签: excel vba excel-vba compare

我正在尝试为我的个人银行帐户执行基于Excel的工具。我已在表格Import中导入了一些银行操作,其中包含3列(DateInformationAmount)。我想将Import中的每一行与已在另一个工作表Data中建立的集合进行比较。

我已经创建了一个函数来测试(根据日期,然后根据需要再次提供信息,然后再根据需要再增加数量)每行,如果数据集合中没有操作,则返回0,数据中的行号集合。

Function CompareRows(SingleRng As Range, CollectionRange As Range) As Integer
    'SingleRange : Date / Info / amount in on line
    'CollectionRange : Date / info / amount / ....(others) on many rows
    'Return 0 if SingleRng is not in CollectionRange, row number of data 
                                                  'collection if present.

    Dim row As Range
    For Each row In CollectionRange
        MsgBox row.Value

       ' If SingleRng(1, 1) = Rng_1(1, 1).Value Then
       '     CompareRows = irw
       ' Else
       '     irw = irw + 1
       ' End If
    Next
End Function

此函数将为Import工作表中的每一行循环,但我不能首先循环每个日期元素。此循环在CollectionRange的每个元素上运行。我尝试For Each row In CollectionRange.Rows,但后面的MsgBox不起作用。如何在每一行上进行此循环?

1 个答案:

答案 0 :(得分:0)

对于一系列行For Each row In CollectionRange.Rows进行循环是正确的。

MsgBox row.Value然后无效的原因是row.Value是一个数组。要查看数组中的某个值,请使用类似row.Cells(1,1).Value

的内容

那就是说,请注意在这样的范围内循环可能会非常慢。如果您对代码的效果不满意,可以选择AutoFilterFindVariant Arrays

等替代方案。