[英]Excel Pivot - Count of distinct values in a given range
我认为这是一个尴尬的情况,因为数据值不止一列,而且它们是文本而不是数字。
我想出的唯一方法是重复获取不同值的标准方法,然后使用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解决方案。
还有一个也是不同的值通式从2D阵列这里但输出包括当空白行和列被包括在内,以便将需要一些修改一个零。
因此,这是上述参考文献中的修改公式,其中错误处理从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设置为包括可能使用的最大行数和列数。
需要稍作修改,以忽略表中的空白。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.