Найти повторяющиеся значения в блоке ячеек - PullRequest
0 голосов
/ 14 января 2020

Есть ли способ (формулы или 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

1 Ответ

0 голосов
/ 14 января 2020

Вот подход VBA, просто набор скучных старых циклов, поэтому он не может быть оптимально эффективным.

Некоторые предостережения

  • он остановится, как только найдет тот же диапазон (даже если есть другие повторы), хотя может изменить это
  • , он не ищет подмножества (то есть диапазон, дублирующийся в большом диапазоне
  • , это на основе ваших ячеек, не содержащих формул, но, опять же, их можно изменить, если это не так.


    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
    

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...