Arrays Excel-比较数组并指定要比较的列,直到第一列为空

Arrays Excel-比较数组并指定要比较的列,直到第一列为空,arrays,excel,vba,Arrays,Excel,Vba,我希望逐行比较同一工作表中的2个数组,但希望指定数组1中的哪一列应与数组2中的哪一列进行比较,并执行此操作,直到值为A列为空为止。例如,数组1是A:E,数组2是G:L,我想将B列与G列中的值进行比较,并说A列将与L列中的值进行比较 当我比较B列和G列时,当我在A列中比较的行的值为空时,如何停止 目前看来,我需要依次遍历每一列,这意味着大约有5个独立的循环,如下所示 Sub compareSheets(shtBefore As String) Dim mycell As Range Dim myd

我希望逐行比较同一工作表中的2个数组,但希望指定数组1中的哪一列应与数组2中的哪一列进行比较,并执行此操作,直到值为A列为空为止。例如,数组1是A:E,数组2是G:L,我想将B列与G列中的值进行比较,并说A列将与L列中的值进行比较

当我比较B列和G列时,当我在A列中比较的行的值为空时,如何停止

目前看来,我需要依次遍历每一列,这意味着大约有5个独立的循环,如下所示

Sub compareSheets(shtBefore As String)
Dim mycell As Range
Dim mydiffs As Integer

For Each mycell In ActiveWorkbook.Worksheets(shtBefore).Range("L:L")
    If Not mycell.Value = ActiveWorkbook.Worksheets(shtBefore).Range("A:A").Cells(mycell.Row, mycell.Column).Value Then

        mydiffs = mydiffs + 1

    End If
Next

For Each mycell In ActiveWorkbook.Worksheets(shtBefore).Range("G:G")    
    If Not mycell.Value = ActiveWorkbook.Worksheets(shtBefore).Range("B:B").Cells(mycell.Row, mycell.Column).Value Then

        mydiffs = mydiffs + 1

    End If  
Next

'Repeated 3 more times.....

End Sub

像这样的怎么样:

Sub compareSheets(shtBefore As String)
Dim strArray As Variant
Dim mydiffs As Integer
Dim lngLastRow As Long
Dim mycell As Range

For Each strArray In Array("L/A", "G/B")
    With ActiveWorkbook.Worksheets(shtBefore)
        lngLastRow = .Cells(.Rows.Count, Split(strArray, "/")(0)).End(xlUp).Row
        For Each mycell In .Range(Split(strArray, "/")(0) & "1:" & Split(strArray, "/")(0) & lngLastRow)
            If Not mycell.Value = .Range(Split(strArray, "/")(1) & mycell.Row).Value Then
                mydiffs = mydiffs + 1
            End If
        Next
    End With
Next strArray

End Sub
显然,您可以对数组进行扩展,以包含其他列以相互比较。L/A代表:将列L与列A进行比较,其中列L(第一列)指示将比较多少行(直到列L中没有更多行,即使列A中可能还有更多行)


注意,如果有选择,您可以使用
.Value2
而不是
.Value
来优化代码。

谢谢您的帮助。使用上面的代码,它看起来像是在比较列L和列L。这是正确的,我需要修改它,还是我做错了什么?效果很好。再次感谢。