根据多列查找不同的值

时间:2015-08-31 01:24:35

标签: excel google-sheets

我有一个销售电子表格(为了保持示例简单)3列

NAME -- STATE -- COUNTRY 

很容易找到多少销量。 (总结所有行) 我可以找到我有多少客户,但是如何找出来自特定州(和国家)的客户数量

NAME -- STATE -- COUNTRY
p1----- CA------ USA
p2----- CA------ USA
p1----- CA------ USA
p1----- CA------ USA
p3----- NY------ USA
p3----- NY------ USA

以上示例将为来自CA的2位独特客户和来自纽约的3位独特客户以及来自美国的3位客户提供

修改

上表所需的结果是

STATE - UNIQUE CUSTOMERS 
CA ----  2
NY ----  1

COUNTRY - UNIQUE CUSTOMERS
USA ---- 3

4 个答案:

答案 0 :(得分:1)

假设您的数据在A,B和C列的第1行中有标题,请按照以下说明操作。

在单元格F1中输入STATE。

在单元格G1中输入COUNT。

在单元格F2中输入此数组公式(必须使用 Ctrl + Shift + Enter↵确认):

=IFERROR(INDEX(B$2:INDEX(B:B,COUNTA(B:B)),MATCH(0,COUNTIF(F$1:F1,B$2:INDEX(B:B,COUNTA(B:B))),)),"")

在单元格G2中输入此常规公式(使用回车确认):

=IF(LEN(F2),COUNTIF(B2:B13,F2),"")

选择F2:G2并复制。

现在选择F3:F51并粘贴。

<强> 更新

问题的性质发生了变化。第一个公式与以前完全相同。它获取源数据中的不同状态并剔除它们,使它们显示没有空格。

第二个公式现在不同了。它需要计算每个州中不同客户的数量,现在是一个使用 Ctrl + Shift + Enter↵确认的数组公式

=IF(LEN(F2),SUM(IF(F2=$B$2:$B$50,1/(COUNTIFS($B$2:$B$50,F2,$A$2:$A$50,$A$2:$A$50)),)),"")

答案 1 :(得分:1)

此公式(以数组公式CTRL-SHIFT-ENTER形式输入)将计算MyState中名称的出现次数

=COUNTIFS(Names,Names,States,MyState)

因此,如果MyState =“CA”,则会返回{3; 1; 3; 3; 0; 0}

要获取CA中的名称数量,您可以将此数组的倒数相加,除非采用零的倒数无效/无限。所以将上面的公式包装在零测试中:如果它为零,则输出零,否则采用倒数(在极少数情况下设置无穷大等于零!):

=IF(COUNTIFS(Names,Names,States,MyState)=0,0,1/COUNTIFS(Names,Names,States,MyState))

(仍然是数组公式。)

对于CA,这将返回{0.333333; 1; 0.333333; 0.333333; 0; 0}

最后一步是与数组公式求和:

=SUM(IF(COUNTIFS(Names,Names,States,MyState)=0,0,1/COUNTIFS(Names,Names,States,MyState)))

由于舍入错误,这可能会返回说2.99999 ...而不是3。如果这是一个问题,您可以通过使用ROUND函数包装它或将显示格式设置为零小数位来修复它。

根据国家/地区修改此内容应该很简单。希望有所帮助。

答案 2 :(得分:1)

由于此问题还有“google-spreadsheets”标记,因此这是我在谷歌电子表格中使用的建议公式:

状态计数:

&x + 1

对于国家来说:

=query(unique(ArrayFormula({A2:A&B2:B, A2:C})), "select Col3, count(Col1) where Col3 <> '' group by Col3 label count(Col1)''",0)

另见this example spreadsheet.

答案 3 :(得分:-1)

使用Excel 2013中的数据透视表轻松:

SO32302815 first example

使用Google Spreadsheets也很容易:

SO32302815 second example