Excel 在单元格块中查找重复值

Excel 在单元格块中查找重复值,excel,Excel,是否有任何方法(公式或vba)可以确定一系列单元格是否在同一张表中重复?我会试着用一个例子来更好地解释自己——比如说我有: A B C 1 x x x 2 y y y 3 z z z 4 5 x x x 6 y y y 7 z z z 在这种情况下,如果我想查找范围A1:C3,它应该告诉我范围A5:C7是第一个范围的副本 不同范围内的数据将具有相同的顺序,因此应查看range1=range2这里是一种VBA方法,只是一组枯燥的旧循环,因此可能不是最佳效率 一些警

是否有任何方法(公式或vba)可以确定一系列单元格是否在同一张表中重复?我会试着用一个例子来更好地解释自己——比如说我有:

  A  B  C
1 x  x  x
2 y  y  y
3 z  z  z
4
5 x  x  x
6 y  y  y
7 z  z  z
在这种情况下,如果我想查找范围A1:C3,它应该告诉我范围A5:C7是第一个范围的副本


不同范围内的数据将具有相同的顺序,因此应查看range1=range2

这里是一种VBA方法,只是一组枯燥的旧循环,因此可能不是最佳效率

一些警告

  • 一旦找到相同的范围(即使有其他重复),它就会停止,尽管这可能会改变
  • 它不寻找子集(即在大范围内复制的范围
  • 它基于不包含公式的单元格,但如果不是这样,也可以更改


    subx()
    尺寸rng作为范围,r作为范围,n作为长度,b作为布尔值
    设置rng=Application.InputBox(“选择范围”、“获取范围对象”,类型:=8)
    对于ActiveSheet.UsedRange.SpecialCells(xlCellTypeConstants.Areas)中的每个r
    如果r.Address rng.Address和r.Rows.Count=rng.Rows.Count和r.Columns.Count=rng.Columns.Count,则
    对于n=1到r.计数
    如果r.单元格(n).值r.单元格(n).值,则
    b=正确
    退出
    如果结束
    下一个
    如果不是b,那么
    MsgBox“单元格”和r.Address&“与所选范围(&rng.Address&”)相同
    如果结束
    出口接头
    如果结束
    下一个r
    端接头
    

范围是动态的还是设置的?例如,它总是测试A1:C3是否与A5:C7匹配,如果不匹配,则公式将不起作用。公式需要模式来完成此操作。@ScottCraner范围是动态的,但如果公式比VBA更容易,我可以每次更改范围。我已经开始编写一些VBA代码:
Dim rng作为范围集rng=Application.InputBox(“选择一个范围”、“获取范围对象”,键入:=8)用于rng调试中的每个cel。下一个cel打印cel.Value
您可能有多少个范围?这可能会变得非常复杂。
=SUMPRODUCT(--(A1:C3=A5:C7))=行(A1:C3)*列(A1:C3)
@SJR它可以有几个范围。不幸的是,我知道它会变得非常复杂。
Sub x()

Dim rng As Range, r As Range, n As Long, b As Boolean

Set rng = Application.InputBox("Select a range", "Obtain Range Object", Type:=8)

For Each r In ActiveSheet.UsedRange.SpecialCells(xlCellTypeConstants).Areas
    If r.Address <> rng.Address And r.Rows.Count = rng.Rows.Count And r.Columns.Count = rng.Columns.Count Then
        For n = 1 To r.Count
            If r.Cells(n).Value <> rng.Cells(n).Value Then
                b = True
                Exit For
            End If
        Next n
        If Not b Then
            MsgBox "Cells " & r.Address & " are the same as selected range (" & rng.Address & ")"
        End If
        Exit Sub
    End If
Next r

End Sub