Вопрос, на который я пытаюсь ответить, заключается в следующем: какое количество продукта X является наиболее распространенным, когда он продается вместе с продуктом Y? Если бы в каждом заказе был только 1 продукт Y, я мог бы использовать функцию Excel MODE.SNGL. Однако в некоторых заказах более 1 продукта Y. Это означает, что продукт X должен быть разделен на продукт Y, и результат должен быть посчитан по количеству продукта Y, чтобы получить реальный режим. Вот очень простой пример:

Order #  |  Product Y  |  Product X  
 111     |    1        |     2  
 123     |    2        |     4  
 145     |    1        |     1  
 354     |    1        |     1

В этом примере правильный ответ для режима продукта X - 2. В заказе 123 есть 2 продукта Y и 4 продукта X, поэтому при вычислении режима это должно быть засчитано как две двойки. В сочетании с Приказом 111 это дает три двойки и наш режим.

Есть ли в Excel или PowerPivot формула, которую я могу использовать для получения этого результата?

0
Eli Waite 15 Ноя 2019 в 04:03
Что вы пробовали до сих пор и как вы хотите отображать результат?
 – 
Terry W
15 Ноя 2019 в 04:38

2 ответа

Формула рабочего листа =MODE.SNGL(OrderTable[Product X]/OrderTable[Product Y]) подойдет.

Исправленный ответ

Позвольте мне отозвать ответ выше. OP ищет режим «Продукт X / Продукт Y», рассматривая каждый отдельный Продукт Y как наблюдение, а не каждый Заказ .

Итак, вот мера DAX для вычисления желаемого числа.

Most Frequent Number Of X Per Y = 
VAR OrdersXdivY = ADDCOLUMNS(
    Orders,
    "@X / Y", DIVIDE(Orders[Product X], Orders[Product Y])
)
VAR SumByXdivY = SUMMARIZE(
    OrdersXdivY,
    [@X / Y],
    "@Sum Y", SUM(Orders[Product Y])
)
RETURN SUMX(TOPN(1, SumByXdivY, [@Sum Y], DESC), [@X / Y])
0
Kosuke Sakai 15 Ноя 2019 в 08:34
К сожалению, это не сработает. Если вы добавите следующее к Y: 10, 2 и следующее к X: 10, 4, ваша формула вернет 2, но правильный ответ должен быть 1, который имеет 12 вхождений, в то время как 2 имеет только 5 вхождений.
 – 
Terry W
15 Ноя 2019 в 07:30
Спасибо за комментарий. Я обновил ответ.
 – 
Kosuke Sakai
15 Ноя 2019 в 08:36

Обычная формула может выглядеть так:

=INDEX(C2:C5/B2:B5,MATCH(MAX(MMULT(TRANSPOSE(B2:B5)*(C2:C5/B2:B5=TRANSPOSE(C2:C5)/TRANSPOSE(B2:B5)),ROW(B2:B5)^0)),
MMULT(TRANSPOSE(B2:B5)*(C2:C5/B2:B5=TRANSPOSE(C2:C5)/TRANSPOSE(B2:B5)),ROW(B2:B5)^0),0))

Формула массива, вводимая с помощью Ctrl Shift Enter

enter image description here

0
Tom Sharpe 15 Ноя 2019 в 15:29