Excel Pivot - 给定范围内的不同值的计数

时间:2015-11-15 07:23:30

标签: excel pivot

我有以下数据集,我需要在数据集中计算不同的值。我尝试了很少的功能,如FREQUENCY,COUNTIFS等,但我无法做到。

输入

  

输入数据

enter image description here

输出

  

预期产出

enter image description here

2 个答案:

答案 0 :(得分:0)

我认为这是一个尴尬的案例,因为数据值在多个列中,因为它们是文本而不是数字。

我能想出的唯一方法是重复获取不同值的标准方法,然后使用COUNTIF来获取计数。

所以从F2开始我有: -

=IFERROR(INDEX($B$2:$B$4,MATCH(0,COUNTIFS($F$1:$F1,$B$2:$B$4),0)),
IFERROR(INDEX($C$2:$C$4,MATCH(0,COUNTIFS($F$1:$F1,$C$2:$C$4),0)),
IFERROR(INDEX($D$2:$D$4,MATCH(0,COUNTIFS($F$1:$F1,$D$2:$D$4),0)),"")))

(它是一个数组公式,必须输入 Ctrl Shift Enter

从G2开始: -

=COUNTIF($B$2:$D$4,F2)

enter image description here

为避免必须指定确切范围(例如$ B2:$ B4),您可以在F2中使用以下内容并将其调整为您可能使用的最大行数: -

=IFERROR(INDEX($B$2:$B$10,MATCH(0,IF(ISTEXT($B$2:$B$10),COUNTIFS($F$1:$F1,$B$2:$B$10),1),0)),
IFERROR(INDEX($C$2:$C$10,MATCH(0,IF(ISTEXT($C$2:$C$10),COUNTIFS($F$1:$F1,$C$2:$C$10),1),0)),
IFERROR(INDEX($D$2:$D$10,MATCH(0,IF(ISTEXT($D$2:$D$10),COUNTIFS($F$1:$F1,$D$2:$D$10),1),0)),"")))

这在G2: -

=IF(F2="","",COUNTIF($B$2:$D$10,F2))

但当然它仅限于三列,我认为可能指向VBA解决方案。

还有一个来自2d数组here的不同值的通用公式,但是当包含空白行和列时输出包含零,因此需要进行一些修改。

所以这里是上面引用的修改公式,从I2开始进行错误处理: -

=IFERROR(INDEX(tbl_text, MIN(IF( IF(ISTEXT(tbl_text),COUNTIF($I$1:$I1, tbl_text),1)=0, ROW(tbl_text)-MIN(ROW(tbl_text))+1)),
 MATCH(0, COUNTIF($I$1:$I1, INDEX(tbl_text, MIN(IF(IF(ISTEXT(tbl_text),COUNTIF($I$1:$I1, tbl_text),1)=0, ROW(tbl_text)-MIN(ROW(tbl_text))+1)), , 1)), 0), 1),"")

计数从J2开始: -

=IF(J2="","",COUNTIF(tbl_text,J2))

其中tbl_text是定义的命名范围(当我测试它时)为$ B $ 2:$ E $ 10

我认为应该满足您更广泛的附加标准,因为您可以设置tbl_text以包含您可能使用的最大行数和列数。

需要稍微进一步修改才能忽略表格中的空白。

答案 1 :(得分:0)

=SUM(IF((B2:D4=C10),1,0))

使用公式点击ctrl + shift + enter

后获取结果

http://i.stack.imgur.com/P1COO.jpg