количество уникальных вхождений в наборе данных, сгруппированных в когорты - PullRequest
0 голосов
/ 16 февраля 2019

В Excel я классифицировал клиентов по группам (ммм-гг), и теперь с ежемесячным графиком выручки (250 строк транзакций клиентов) я хотел бы получить уникальное число транзакций в когорте за диапазон месяцев,Мне не удалось перейти от общего числа транзакций в месяц к уникальным когортным транзакциям за месяц (без учета повторных клиентов).

Это примеры функций, которые я пробовал:

Я пробовал итерации = SUM (IF (FREQUENCY (IF (A $ 2: A $ 15 = D2, MATCH (B $ 2:B $ 15, B $ 2: B $ 15,0)), ROW (B $ 2: B $ 15) -ROW (B $ 2) +1), 1)) Это дает мне уникальных членов в когорте

I 'мы также использовали = COUNTIFS (рабочий лист1! $ F $ 2: $ F $ 247, $ H2, INDEX (рабочий лист1! $ H $ 2: $ AQ $ 247, MATCH (J $ 1, рабочий лист1! $ H $ 1: $ AQ $ 1,0)), "> 0")

Считает транзакции только по мере их появления по расписанию для каждой группы, но не фильтрует по уникальным подсчетам.

Помощь очень ценится!

https://imgur.com/cpwcr4s

An example data range is first image, and I am trying to get to the image below as the output

Ответы [ 2 ]

0 голосов
/ 17 февраля 2019

Это простая формула подсчета уникальности для листа Excel.

'unique count of column A
=SUMPRODUCT(1/COUNTIF(A2:A11, A2:A11))

Вы можете начать с этого, но вам нужно добавить некоторые условия;например, столбец Группа должен принадлежать A или B , а месячный столбец должен быть ненулевым.Измените знаменатель COUNTIF на COUNTIFS и добавьте условия, измените числитель деления на логическое определение тех же критериев, добавьте обратный числитель к знаменателю, чтобы избежать # DIV / 0!ошибки.

'unique count of column A where Group=G7 and January is non-zero
=SUMPRODUCT((($B$2:$B$999=$G7)*(C$2:C$999>0))/(COUNTIFS($A$2:$A$999, $A$2:$A$999, $B$2:$B$999, $G7, C$2:C$999, ">0")+($B$2:$B$999<>$G7)+(C$2:C$999=0)))

enter image description here

0 голосов
/ 16 февраля 2019

Вы также можете попробовать:

enter image description here

Это код ниже:

Public Function CountDiff(valor, referencia)

    'valor = "A"
    'referencia = the range of the month that contains Numbers

    Dim coleccion As New Collection

    For Each celda In referencia

        If Len(celda.Value) > 0 Then

            If IsNumeric(celda.Value) Then

                If Range("b" & celda.Row) = valor Then

                    coleccion.Add Range("c" & celda.Row) & Range("a" & celda.Row) &     Range("b" & celda.Row) & Range("c" & celda.Row)
                End If
            End If
        End If

    Next

    CountDiff = GetUniqueCount(coleccion)

End Function

Private Function GetUniqueCount(aFirstArray)
    Dim arr As Collection
    Set arr = New Collection

    On Error Resume Next
        For Each a In aFirstArray

            arr.Add a, CStr(a)
        Next
    On Error GoTo 0
    GetUniqueCount = arr.Count
End Function

Я надеюсь, что это работает для вас!

...