Подсчет повторяющихся значений в разделенных запятыми списках - PullRequest
0 голосов
/ 16 июня 2019

Мои данные в столбце A имеют значения, разделенные запятыми (одно / двухзначные числа).Мне нужен способ подсчитать количество повторений в двух последовательных строках.

Пример данных:

DATA              Expected Results
1,2,3,4,5                4
2,3,4,5                  2
3,4                      0
10,11,40,60,72,75        3
10,40,3,75  

Обратите внимание, что в каждом списке нет одинакового количества значений.A1 имеет 5 значений, A2 имеет 4, A3 имеет 2 и т. Д.

Буду признателен за любую помощь.Спасибо!

Ответы [ 2 ]

2 голосов
/ 16 июня 2019

Вот один вариант для B2:

=IFERROR(SUMPRODUCT(--(1*TRIM(MID(SUBSTITUTE(A2,",",REPT(" ",99)),(ROW(INDEX(AAA:AAA,1):INDEX(AAA:AAA,LEN(A2)-LEN(SUBSTITUTE(A2,",",""))+1))-1)*99+1,99))=(TRANSPOSE(1*TRIM(MID(SUBSTITUTE(A3,",",REPT(" ",99)),(ROW(INDEX(AAA:AAA,1):INDEX(AAA:AAA,LEN(A3)-LEN(SUBSTITUTE(A3,",",""))+1))-1)*99+1,99)))))),"")

Введите через Ctrl Shift Введите

Перетащите вниз ...

enter image description here

На рисунке показаны точки, поскольку я не мог использовать запятые из-за моей версии Excel.

Заимствовал некоторые знания у здесь

1 голос
/ 16 июня 2019

как альтернатива VBA

Public Function commonCount(aRng As Range, bRng As Range) As Integer
Dim bArr() As String, aArr() As String, a As Integer, b As Integer

aArr = Split(aRng.Value, ",")
bArr = Split(bRng.Value, ",")

For a = LBound(aArr) To UBound(aArr)
    For b = LBound(bArr) To UBound(bArr)
        If aArr(a) = bArr(b) Then
            commonCount = commonCount + 1
            GoTo nexta
        End If
    Next b
nexta:
Next a

End Function

В B2 commonCount(A2,A3)

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