Excel透视 – 在给定范围内的不同值的计数

我有以下的数据集,我需要在数据透视中的不同值的数量。 我已经尝试了像FREQUENCY,COUNTIFS等一些函数,但是我做不到。

input

input数据

在这里输入图像说明

产量

预期产出

在这里输入图像说明

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

使用公式后得到结果按ctrl + shift + enter

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

我认为这是一个尴尬的情况,因为数据值不止一列,因为它们是文本而不是数字。

我能想出的唯一方法就是重复一个获得不同值的标准方法,然后使用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) 

在这里输入图像说明

为了避免必须指定确切的范围(例如$ 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解决scheme。

在这里还有一个二维数组的不同值的通用公式,但是当包含空行和列时,输出包括一个零,因此需要进行一些修改。

所以这里是从上面引用的修改公式,以I2开始的error handling:

 =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是一个已定义的命名范围(当我testing它时)为$ B $ 2:$ E $ 10

我认为这应该符合你更多的标准,因为你可以设置tbl_text来包含你可能使用的最大行数和列数。

将需要稍作进一步修改,以忽略表中的空白。