我怎样才能找到已购买三件特定商品的客户以及只有3件具有excel公式的商品

时间:2018-04-20 18:43:28

标签: excel excel-formula excel-2013

我有一个类似于我上一个的问题。我试图弄清楚如何找到一次只购买胶带,笔和订书机的客户。

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","")

3 个答案:

答案 0 :(得分:2)

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

<li>
    <a href="https://www.google.com/chrome/browser" target="_blank">
        <img alt="Chrome" src="@Url.Content(" ~="" content="" images="" chrome-logo.png")"="">
        CHROME
    </a>
</li>

enter image description here

答案 1 :(得分:1)

您可以使用以下公式来确定给定客户是否使用以下公式(在本例中为钢笔)中的一个和一个给定项目:

=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)

答案 2 :(得分:0)

如果您想要购买任何一件商品的人,而不是三件商品中的每件商品中的一件,您可以使用传统的&#39;数据透视表:

enter image description here

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

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

enter image description here

如果你想要那些购买了三个 中的一个的人,你可以使用传统的数据透视表,并在旁边运行一个公式(如果只使用像Scott Craner建议的那样的公式,那么就可以使用任何优势,或者你可以使用OLAP数据透视表并使用DAX编写测量。这个相当新的功能非常棒:您现在可以在数据透视表本身内编写复杂的公式。

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

![enter image description here

......公式为:

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

但这与斯科特克拉纳给出的伟大答案之间没有任何优势。

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

这要求您拥有内置DataModel的Excel(即Excel 2013或更高版本) 具有PowerPivot加载项的Excel版本已安装(Excel 2010免费版,内置于其他Excel版本,如果您拥有合适的高级版本,如Professional Plus等)。

结果如下:

enter image description here

......以及我使用的措施: enter image description here

...如果你没有安装PowerPivot(但是有Excel 2013或更高版本),那么如何添加一个度量:你只需右击这里:

enter image description here

这要求您检查&#34;添加到数据模型&#34;首次制作数据透视表时的选项:

enter image description here

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构建。这里是:

enter image description here

它的工作原理是使用旧的&#34;参数arg&#34;在Table2的第二列中使用1,2,4 ......的技巧,这样你就可以看到有人购买的所有内容都添加到7. Sneaky!

以下是衡量标准:

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