确定被Excel或Power Pivot中的另一列分隔时的模式
我想回答的问题是,当产品X与产品Y一起销售时,最常见的产品X数量是多少?如果每个订单上只有一个产品Y,我可以使用Excel的MODE.SNGL函数。但是,有些订单有超过1个产品Y。这意味着产品X必须除以产品Y,结果需要按产品Y的数量计算,才能得到实际模式。下面是一个非常简单的例子:确定被Excel或Power Pivot中的另一列分隔时的模式,excel,excel-formula,powerbi,powerpivot,Excel,Excel Formula,Powerbi,Powerpivot,我想回答的问题是,当产品X与产品Y一起销售时,最常见的产品X数量是多少?如果每个订单上只有一个产品Y,我可以使用Excel的MODE.SNGL函数。但是,有些订单有超过1个产品Y。这意味着产品X必须除以产品Y,结果需要按产品Y的数量计算,才能得到实际模式。下面是一个非常简单的例子: Order # | Product Y | Product X 111 | 1 | 2 123 | 2 | 4 145
Order # | Product Y | Product X
111 | 1 | 2
123 | 2 | 4
145 | 1 | 1
354 | 1 | 1
在本例中,产品X模式的正确答案为2。订单123有2个产品Y和4个产品X,因此在模式计算中,这应计为2个2。当与订单111结合时,这就形成了三个2和我们的模式
Excel或PowerPivot中是否有一个公式可用于获得此结果?工作表公式
=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])
常规公式可能如下所示:
=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))
是数组公式,必须使用CtrlShiftCenter输入
到目前为止您尝试了什么,以及您希望如何显示输出?不幸的是,它无法工作。如果您将以下内容添加到Y:
10,2
和X:10,4
,您的公式将返回2
,但正确答案应该是1
,它有12次出现,而2
只有5次出现。@TerryW感谢您的评论。我更新了答案。