Найти повторяющиеся значения в столбце (столбцах), возвращают с окном сообщения строки - PullRequest
0 голосов
/ 16 апреля 2020

Итак, у меня есть форум, в который пользователи вводят данные, и мне нужно 2 разных проверки на наличие дублирующихся значений при их вводе.

сейчас у меня есть другие проверки, которые происходят, и он вызывает модули согласно столбцу работают над Таким образом, эти коды будут go в отдельных модулях (у меня есть вызовы, передающие row_value модулям.

x = row_value

Так что мой код диапазона выглядит примерно так: Range("E" & x).Value

диапазон, на который мне нужно взглянуть - от E7:G307

Первый код, который мне нужен, - это посмотреть и посмотреть, существует ли только что введенный / измененный Range("E" & x).Value в любой другой ячейке в этом столбце E. и если это так, отобразить сообщение, ссылающееся на дублирующую строку #

Так что, если они входят в «Левый бедро» в ячейку E10, он проверяет все остальные ячейки в E7:E307, чтобы увидеть, используется ли «Левый бедро» в любой другой ячейке E и, скажем, E7 = Left Hip, затем отобразите сообщение: `" Дубликат найден в строке 7 "

Второй код, который мне нужен, аналогичен, за исключением того, что мне нужно посмотреть на 2 столбца в то же время для дубликатов. F & G и в случае совпадения выведите сообщение, ссылающееся на дублирующую строку #

Так что, если они введены в «Потерянные» в ячейку F10 и в «Воду» в ячейку G10 тогда он будет смотреть на все другие ячейки в F7:G307, чтобы увидеть, есть ли совпадение в обеих ячейках на одной строке. Так что если F7 = "Wasted" и G7 = "Trash" совпадения нет, но это G7 = "Water", то совпадение будет для обоих столбцов. и затем отобразить сообщение "Duplicate found on Line 7" Примечание. Я сделаю эту проверку после того, как они будут введены в столбец "G".

Не уверен, какая еще информация вам нужна, не стесняйтесь спрашивать и спасибо за помощь.

Примечание: я пытался использовать метод Range.Find, но не могу заставить что-либо работать. Я просто недостаточно понимаю, я смотрел на примеры, но опять же не уверен, как адаптировать его к своим потребностям.

1 Ответ

0 голосов
/ 16 апреля 2020

Всегда полезно передавать диапазон значений в массив, чтобы они могли обрабатываться быстрее. Вот, думаю, полезное начало, чтобы указать вам правильное направление. Его нужно немного изменить, как если бы ваш счетчик начинался с 7 вместо 1.

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim value As Variant
    Dim counter As Long

    ''Don't need the empty check, but could be updated to make this static if you wanted to
    Dim values As Variant
    If IsEmpty(values) Then
        values = Worksheets("Sheet1").Range("A1:A700")
    End If

    If Not Intersect(Target, Range("A1:A700")) Is Nothing Then
        counter = 1
        For Each value In values
            If value = Target.value Then
                If Target.Row <> counter Then
                    MsgBox "Duplicate Value on line: " & counter
                End If
            End If
            counter = counter + 1
        Next value
    End If

End Sub
...