我怎样才能找到已经购买了某件商品中的三件并且只购买了具有 excel 公式的那 3 件商品的客户

How can I find clients that have bought three of a certain item and only those 3 items with excel formula

我有一个与上一个问题类似的问题。我想弄清楚如何找到只购买过一次胶带、笔和订书机的客户。

Name    CustmoerID  Item Name   Item #  Desired Results
Bob     1           Pen         555 
Bob     1           Stapler     222 
Bob     1           Stapler     222 
Bob     1           Tape        111 
Greg    2           Pen         555 
Greg    2           Pen         555 
Greg    2           Stapler     222 
Tim     3           Stapler     222 
Tim     3           Tape        666 
Tim     3           Glue        333 
Mark    4           Pen         555     Check
Mark    4           Stapler     222     Check
Mark    4           Tape        111     Check

这是我想得到的衣橱。但是运气不好。

=IF(AND(OR(D2={111}),COUNTIF(B:B,B2)=1)*AND(OR(D2={222}),COUNTIF(B:B,B2)=1)*AND(OR(D2={555}),COUNTIF(B:B,B2)=1),"Check","") 

编辑 - 这让我更接近了一点,但仍然无法正常工作。

=IF(AND(OR(D11={111,222,555}),COUNTIF(B:B,B11)=3)*AND(OR(D11={111,222,555}),COUNTIF(B:B,B11)=3)*AND(OR(D11={111,222,555}),COUNTIF(B:B,B11)=3),"Check","")

您可以使用以下公式来确定给定客户是否已使用以下公式(在本例中为钢笔)订购一件且仅一件给定商品:

=COUNTIFS(B:B, B2,D:D, 555)=1

然后您也可以将其转化为订书机和胶带。最简单的方法是将它们中的每一个都放入它们自己的列中并使用 AND 语句,但所有这些都看起来像:

=AND(COUNTIFS(B:B, B2,D:D, 555)=1, COUNTIFS(B:B, B2,D:D, 222)=1, COUNTIFS(B:B, B2,D:D, 111)=1)

如果您想要购买其中任何一项的人,而不是三项中的每一项,您可以使用 'Traditional' 数据透视表:

这只是一个应用了项目筛选器(使用切片器)和值筛选器的数据透视表,仅显示计数 = 1 的结果

请注意,您需要选中“数据透视表选项”>“总计和过滤器”对话框的“允许每个字段使用多个过滤器”选项,以便同时设置过滤器和值过滤器。

如果您想要购买三件商品中的一件每件一件的人,您可以使用传统的数据透视表公式 运行 在旁边(这对于简单地使用 Scott Craner 在他的回答中建议的公式没有任何优势),或者您可以使用 OLAP 数据透视表并使用 DAX 编写度量。这个相当新的功能简直太棒了:您现在可以直接在数据透视表中编写复杂的公式。

如果使用数据透视表 + 公式方法,它看起来像这样:

...公式为:

=AND(GETPIVOTDATA("Item Name",$B,"Name",B3,"Item #",C)=1,GETPIVOTDATA("Item Name",$B,"Name",B3,"Item #",D)=1,GETPIVOTDATA("Item Name",$B,"Name",B3,"Item #",F)=1,GETPIVOTDATA("Item Name",$B,"Name",B3)=3)

但这与 Scott Craner 给出的出色答案之间确实没有任何优势。

或者您可以使用 DAX 度量和基于 DataModel 的 OLAP 数据透视表。

这要求您拥有内置 DataModel 的 Excel(即 Excel 2013 或更高版本) 一个安装了 PowerPivot 加载项的 Excel 版本(Excel 2010 免费,如果您有正确的高级版本,则内置到其他 Excel 版本,例如Professional Plus 等)。

结果如下:

...这是我使用的措施:

...如果您没有安装 PowerPivot(但有 Excel 2013 或更高版本),这里是添加度量的方法:您只需右键单击此处:

这要求您在首次制作数据透视表时选中 "Add to Data Model" 选项:

2018 年 5 月更新:

我在 https://community.powerbi.com/t5/Desktop/Identify-customers-who-had-puchased-exactly-one-unit-of-three/td-p/407941 上发布了一个关于如何更动态地执行此操作的问题,并得到了 4 个很好的答案。所有四个都适用于 Excel 365,但只有 Phil Seamark 的第三个答案适用于我的 Excel 2016 版本。这是:

它的工作原理是使用旧的 "parameter arg" 技巧,即在表 2 的第二列中使用 1、2、4、...,这样您就可以看到是否有人购买的所有东西都添加到了 7 中。偷偷摸摸!

这是衡量标准:

=COUNTROWS(
  FILTER(
    SUMMARIZE(
        'Table1',
        Table1[Customer],
        "Score", SUM('Table2'[ID]),
        "myRows",COUNTROWS('Table1')
   ),[Score]=SUM(Table2[ID]) && [myRows]=COUNTROWS(Table2))
 )

这允许对同一事物使用两个代码,并检查是否存在三个代码。

=IF(AND(COUNTIF(B:B,B2)=3,SUMPRODUCT(--(COUNTIFS(B:B,B2,D:D,{222,111,777,555})=1))=3),"Check","")