使用VBA比较Excel中不同选项卡上的两个数据表

时间:2019-01-14 14:10:12

标签: excel vba

我对Excel中的Macros和VBA比较陌生,因此我需要一些有关如何解决当前问题的指导。

我的项目的最终目标是让宏比较按行和列组织的两组数据(我们说表A是源数据,表B是基于用户输入的)。表B中的每一行应对应于表A中的一行,但它们可能乱序,或者表B中的条目不正确。

我的想法是,对于每个表的第一行,宏都会从左到右比较每个单元格:

If Sheets("sheet1").Cells(2, 1) = Sheets("sheet2").Cells(2, 1) Then
    If Sheets("sheet1").Cells(2, 2) = Seets("sheet2").Cells(2, 2)

我的问题出在表B中的单元格与表A不匹配时。

首先,我希望它对照A中的下一行检查B行1,并继续遍历表A,直到找到与行匹配的所有五列都完全匹配的“完全匹配”为止。

我一直在尝试使用Else if和For / Next台词

For row= 2 to 10
'if statements go here
     Else If Sheets("sheet1").Cells(2, 1) <> Sheets("sheet2").Cells(2, 1)
Next row

我可能在这里完全误解了语法,但是我还没有出现这样一种情况:如果不满足条件,它将转到下一行。

如果未找到完全匹配项,则应突出显示表B第1行中无法匹配的最后一个单元格。

然后,无论是否找到匹配项,我们都将移至表B第2行,然后重新开始整个过程​​。

所以,我已经弄清楚了逻辑(我认为),其中比较ifs将在一个循环(或某个循环)内,该循环将逐行循环遍历表。然后整个过程将在另一个循环(或其他循环)中循环通过表B。

在过程结束时,将没有高亮显示所有输入的数据正确的单元格,或者将高亮显示不匹配数据的单元格。

我相当确定,通过表B循环不是问题。相反,如果不匹配,我很难使宏移到下一张表。

请让我知道是否需要详细说明。

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以尝试:

Option Explicit

Sub test()

    Dim Lastrow1 As Long, Lastrow2 As Long, i As Long, j As Long
    Dim Str1 As String, Str2 As String

    'Find the last row of sheet 1
    Lastrow1 = Sheet1.Cells(Sheet1.Rows.Count, "A").End(xlUp).Row

    'Find the last row of sheet 2
    Lastrow2 = Sheet2.Cells(Sheet2.Rows.Count, "A").End(xlUp).Row

    For i = 2 To Lastrow1
        'Let us assume that table has 3 columns. Merge 3 columns' values and create a string for each line
        Str1 = Sheet1.Cells(i, 1).Value & "_" & Sheet1.Cells(i, 2).Value & "_" & Sheet1.Cells(i, 3).Value

        For j = 2 To Lastrow2
            'Let us assume that table has 3 columns. Merge 3 columns' values and create a string for each line
            Str2 = Sheet2.Cells(j, 1).Value & "_" & Sheet2.Cells(j, 2).Value & "_" & Sheet2.Cells(j, 3).Value

            'If both strings match a message box will appear
            If Str1 = Str2 Then
                MsgBox "Line " & i & " in table A match with line " & j & " in table B!"
                Exit For
            End If

        Next j

    Next i

End Sub

第1张结构:

enter image description here

第2页结构:

enter image description here