Страницы: 1
RSS
Подсчет количества уникальных по условию
 
Добрый день!
Подскажите как можно реализовать подсчет количества уникальных значений по условию.
Подробнее то так:
Имеем условие Группа 1, в таблице есть столбец с группами и с данными (Т1, Т2, и т.д) хочу получить количество Т1, Т2 используемые в группе 1
 
для excel 365:
=ЧСТРОК(УНИК(ФИЛЬТР(A2:C8;A2:A8=F13)))
Изменено: Бахтиёр - 29.09.2021 12:28:12
 
Вариант:
Код
=СУММПРОИЗВ((A$2:A$8=ЛЕВСИМВ(F13;ДЛСТР($F$13)-1))*($C$2:$C$8="Т1")/СЧЁТЕСЛИМН(A$2:A$8;A$2:A$8;C$2:C$8;C$2:C$8))

Или для массива условий, в том числе и Т2, когда оно появится в примере))
Код
=СУММПРОИЗВ((A$2:A$8=ЛЕВСИМВ(F13;ДЛСТР($F$13)-1))*($C$2:$C$8=$E$2:$F$2)/СЧЁТЕСЛИМН(A$2:A$8;A$2:A$8;C$2:C$8;C$2:C$8))
 
memo, Возможно я не точно пояснил как хотелось бы чтобы система считала.
Если взять для примера Группа 1, в столбце "С", под группой 1 у нас есть Т1 и Т3, получается два значения, вот именно цифру 2 хотелось бы чтобы он выводил.
Может это удобнее через VBA?
 
Цитата
Денис Ш. написал:
под группой 1 у нас есть Т1 и Т3, получается два значения,
Так в чем проблема, я же во второй формуле явно указал диапазон для условий E2:F2 - прописываете туда нужные Т и будет вам подсчет.
Изменено: memo - 29.09.2021 14:48:18
 
Цитата
Денис Ш. написал:
через VBA?
Код
Sub mrshkei()
Dim arr, arr2, i As Long, lr As Long, col As New Collection, col2 As New Collection
lr = Cells(Rows.Count, 1).End(xlUp).Row
arr = Range("A2:C" & lr)
For i = LBound(arr) To UBound(arr)
    On Error Resume Next
    col.Add arr(i, 1), arr(i, 1)
    col2.Add arr(i, 1) & "/\/\" & arr(i, 3), arr(i, 1) & "/\/\" & arr(i, 3)
Next i
For i = 1 To col.Count
Cells(i + 1, 5) = col(i)
    For n = 1 To col2.Count
        If InStr(col2(n), col(i)) > 0 Then x = x + 1
    Next n
    Cells(i + 1, 6) = x
    x = 0
Next i
End Sub
Не бойтесь совершенства. Вам его не достичь.
 
Mershik,то что нужно, огромное спасибо. Только вопрос, можно сделать так чтобы пустые не считал?
 
Денис Ш., что пустые?
Код
Sub mrshkei()
Dim arr, arr2, arr3, i As Long, lr As Long, col As New Collection, col2 As New Collection
lr = Cells(Rows.Count, 1).End(xlUp).Row
arr = Range("A2:C" & lr)
For i = LBound(arr) To UBound(arr)
    On Error Resume Next
    col.Add arr(i, 1), arr(i, 1)
    col2.Add arr(i, 1) & "/\/\" & arr(i, 3), arr(i, 1) & "/\/\" & arr(i, 3)
Next i
For i = 1 To col.Count
Cells(i + 1, 5) = col(i)
    For n = 1 To col2.Count
    arr3 = Split(col2(n), "/\/\")
        If arr3(0) = col(i) And arr3(1) <> "" Then x = x + 1
    Next n
    Cells(i + 1, 6) = x
    x = 0
Next i
End Sub
Изменено: Mershik - 29.09.2021 15:58:41
Не бойтесь совершенства. Вам его не достичь.
 
Mershik,спасибо большое за помощь, как раз то что надо!
Страницы: 1
Наверх