1

请参阅下面的答案。

我记得不久前用数组公式解决了这个问题,但我再也没有原来的工作簿了,答案完全让我无法理解。

这是示例数据:

Salesman    Product
Bill        Apple
Bob         Orange
Bill        Banana
Bob         Apple
Bill        Apple
Bob         Orange
Bill        Apple

我想做的是用 Bob 和 Bill 已售出的 DISTINCT 商品的数量制作另一张表。IE:

Salesman Distinct Items
Bill     2
Bob      2

我记得使用数组公式技巧IF来构建基于查找值的数组,但是对于我的一生,我无法弄清楚我是如何将不同的计数应用于后续数组的。这与 有关FREQUENCY,但这仅适用于数字,当我尝试仅数字时,我什至无法复制它。在这里,我玩过SUM(1/COUNTIF(RANGE,RANGE))SUMPRODUCT(1/COUNTIF(RANGE,RANGE))

具体来说,在 Bill inD2和 Bob 在的情况下,D3我得出了这个数组公式(放在E2and中E3):

{=SUM(IF($A$2:$A8=D2,1/COUNTIF($B$2:$B8,$B$2:$B8)))}

(D3 显然取代了单元格中的 D2 E3。)

不过,这还很遥远。我正在使用 Evaluate Formula 来跟踪它,我可以看到COUNTIF计算每个项目的所有出现,而不仅仅是属于查找的那些。

任何指向正确方向的指针?考虑到我过去破解过一次,这真的很令人沮丧。

(我意识到使用 Excel 2013 可以Distinct Count在数据透视表中执行此操作,但出于几个原因,我需要在此处之外执行此操作。)

提前致谢。

编辑 - 找到它 - 请参阅下面的答案

4

2 回答 2

2

回答我自己的问题,以便它显示为已解决。

我去搜索并遇到了这个:

http://www.mrexcel.com/forum/excel-questions/706444-function-formula-excel-count-unique-values-matching-criteria.html

这是公式:

=SUM(IF(FREQUENCY(IF($A$2:$A$8=D2,MATCH($B$2:$B$8,$B$2:$B$8,0)),IF($A$2:$A$8=D2,MATCH($B$2:$B$8,$B$2:$B$8,0)))>0,1))

我不知道我以前是怎么做到的,但我会在整天捂脸之后尽我所能。

于 2014-02-15T08:10:35.537 回答
1

你可以试试这个数组公式:

=SUM(IF(ROW($C$2:$C$6)-ROW($C$2)+1=IFERROR(MATCH($C$2:$C$6;IF($B$2:$B$6=A2;$C$2:$C$6);0);0);1;0))

B2:B6 中的名称,C2:C6 中的产品和 A2 中要查找的名称

根据您的区域设置,您可能需要更改字段分隔符“;” 经过 ”,”

于 2014-02-15T10:35:05.217 回答