Чтобы получить количество значений с дубликатами в списке, используйте следующую формулу:
=COUNTA(A1:A20)-SUM(IF(COUNTIFS(INDIRECT("$A$1:" & ADDRESS(ROW(A1:A20),1)),A1:A20,INDIRECT("$B$1:" & ADDRESS(ROW(B1:B20),2)),B1:B20)=1,1,0))
Введите это как формулу массива, нажав Ctrl+Shift+Enter. Это даст вам счет в одной ячейке - дополнительные столбцы не нужны.
Вы также можете вернуть номера строк каждой дублирующейся записи, но вам понадобится небольшая помощь от пользовательской функции VBA (UDF). Чтобы создать UDF в VBA, нажмите Alt+F11 и вставьте модуль. Вставьте следующий код в модуль.
Public Function CCARRAY(rr As Variant, sep As String)
'rr is the range or array of values you want to concatenate. sep is the delimiter.
Dim rra() As Variant
Dim out As String
Dim i As Integer
On Error GoTo EH
rra = rr
out = ""
i = 1
Do While i <= UBound(rra, 1)
If rra(i, 1) <> False Then
out = out & rra(i, 1) & sep
End If
i = i + 1
Loop
out = Left(out, Len(out) - Len(sep))
CCARRAY = out
Exit Function
EH:
rra = rr.Value
Resume Next
End Function
Теперь, чтобы получить список номеров строк дубликатов, введите в ячейку следующую формулу:
=CCARRAY(IF(COUNTIFS(INDIRECT("$A$1:" & ADDRESS(ROW(A1:A20),1)),A1:A20,INDIRECT("$B$1:" & ADDRESS(ROW(B1:B20),2)),B1:B20)>1,ROW(B1:B20),0),", ")
Введите эту формулу как формулу массива, нажав Ctrl+Shift+Enter.
Вы также можете использовать этот UDF для получения списка фактических значений, которые имеют дубликаты. Следующая формула будет работать для этой цели:
=CCARRAY(IF(COUNTIFS(INDIRECT("$A$1:" & ADDRESS(ROW(A1:A20),1)),A1:A20,INDIRECT("$B$1:" & ADDRESS(ROW(B1:B20),2)),B1:B20)>1,A1:A20&" "&B1:B20,0),", ")
Также введите это как формулу массива.