excel - 比较 Excel 中的两个范围

标签 excel vba

我正在尝试比较两个范围的数据。 “A”包含 1,2,3,4,“B”包含 1,2,5。我想找到那些在“B”中但不在“A”中的内容,即 5。下面是我的代码,但我似乎无法得到我想要的。有人可以建议一下吗?

Dim a As Range, b As Range, i As Integer, x As Integer
Set a = Range("A1:A4")
Set b = Range("B1:B3")

For i = 1 To b.Count
  For x = 1 To a.Count

    If b(i, 1) = a(x, 1) Then

    Else
      MsgBox (b(i, 1))
      Exit For
    End If
  Next x
Next i

最佳答案

这是一个非常小的范围,但我仍然建议使用数组来存储范围值,然后使用数组进行比较。请参阅此示例。

Sub Sample()
    Dim Ar1, Ar2
    Dim i As Long, j As Long
    Dim Found As Boolean

    Ar1 = Range("A1:A4"): Ar2 = Range("B1:B3")

    For i = LBound(Ar2) To UBound(Ar2)
        Found = False
        For j = LBound(Ar1) To UBound(Ar1)
            If Ar1(j, 1) = Ar2(i, 1) Then
                Found = True
                Exit For
            End If
        Next j

        If Found = False Then Debug.Print Ar2(i, 1) & " Is unique"
    Next i
End Sub

enter image description here

编辑

另一种方式(不过我仍然更喜欢上面的方式)

Sub Sample()
    Dim rngA As Range, rngB As Range
    Dim aCell As Range, bCell As Range
    Dim Found As Boolean

    Set rngA = Range("A1:A4"): Set rngB = Range("B1:B3")

    For Each aCell In rngB
        Found = False
        For Each bCell In rngA
            If bCell.Value = aCell.Value Then
                Found = True
                Exit For
            End If
        Next

        If Found = False Then Debug.Print aCell.Value & " Is unique"
    Next
End Sub

关于excel - 比较 Excel 中的两个范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16226122/

相关文章:

r - 对从批处理文件运行 R 与直接从 shell 运行 R 之间的区别感到困惑

excel - VBA从列表中提取唯一值并在单独的页面上计算它们

excel - 将列表框中的所有选中项返回到单元格的函数

javascript - 有什么方法可以将 html 表导出到在所有浏览器中工作的 Excel 中吗?

vba - Excel VBA - 将逗号分隔的句子从电子邮件复制到单独的 Excel 单元格

excel - 在Excel中将文本左右对齐?

sql - Access VBA 类型不匹配

c# - 将单元格中的数据分配给变量时遇到问题

excel - VBA - 如何复制列一次但粘贴两次?

vba - 如果 B 列中的任何单元格包含字符串 X,则删除行并将单元格上移