Выделите дубликаты составного значения БЕЗ создания составных значений в рабочем листе - PullRequest
0 голосов
/ 12 марта 2019

Цель: У меня есть список имени, фамилии и я хочу выделить дубликаты при вводе нового человека. (или нажмите кнопку, чтобы проверить, не дублирована ли она)

Старое решение: Первоначально у меня был код, который проверял, является ли Имя первым дубликатом И если фамилия дубликатом, а затем выделен, но на самом деле он не показывает истинные дубликаты, потому что в этом примере: Тим Смит Питер Смит Тим НотСмит Тим Смит будет выделен, потому что Тим дубликат, а Смит дубликат, а ТимСмит - нет.

Текущий код: Теперь я просматриваю объединенный список «Имя» и «Фамилия» и, если он повторяется, выделите. Это, очевидно, работает хорошо.

Private Sub CommandButton1_Click()
lastrow = Worksheets("Sheet1").Cells(Rows.Count, 5).End(xlUp).Row

  For i = 3 To lastrow
  Set myrange = Range("G:G")

  Range("G3:G98") = "=CONCATENATE(RC[-2],RC[-1])"

      For j = 3 To lastrow

        If WorksheetFunction.CountIf(myrange, Worksheets("Sheet1").Cells(j, 7).Value) 
        <> 1 Then

            Worksheets("Sheet1").Cells(j, 5).Interior.ColorIndex = 8
            Worksheets("Sheet1").Cells(j, 6).Interior.ColorIndex = 8

        End If

      Next
  Next
End Sub

Так что вместо этого я не хочу, чтобы объединенный столбец в наборе данных существовал как память или что-то в этом роде. Может в массиве?

Я просто хочу проверить, были ли дубликаты, если бы у меня был такой столбец, но я бы не создавал этот столбец. Мне нужно, чтобы рабочий лист и его столбцы были согласованными. Поэтому у меня не может быть дополнительного столбца, такого как concat.

Я полностью открыт для разных стратегий. Есть много способов снять кожу с кошки.

Основная цель - выделить настоящие дубликаты. Идеально при вводе нового человека или при нажатии кнопки.

1 Ответ

1 голос
/ 12 марта 2019

Почему бы не использовать условное форматирование со следующей формулой:

=COUNTIFS($E:$E,$E1,$F:$F,$F1)>1

Будет выделено все дубликаты

Если вы не хотите, чтобы первый экземпляр выделен, используйте:

=COUNTIFS($E$1:$E1,$E1,$F$1:$F1,$F1)>1
...