Excel:使用条件和组合计算唯一值

时间:2016-10-28 14:19:41

标签: excel excel-formula excel-2013 libreoffice-calc

为了简化这一点,假设我在Excel 2013(或LibreOffice)中有一个电子表格,其中有一个包含行的列表,我可以在其中看到以下值:

(抱歉,图片上传目前不适用于我。我会尽快用等宽文本替换等宽文本)

Country City        Person  Car Home
USA     New York    Alice   1   1
USA     New York    Bob     1   0
USA     Washington  Charlie 1   1
Canada  Ontario     Alice   0   1
Canada  Ontario     Bob     1   0
Canada  Ontario     Charlie 1   0
Canada  Ontario     Charlie 1   0
Canada  Toronto     Alice   1   1
Canada  Toronto     Bob     0   0

组合选择器:

Country -> Canada
City    -> Ontario              

总计:

        SUM     Distinct people     
Car     3       2       
Home    1       2       

可以重复值。我们可以看到Charlie在安大略省(加拿大)拥有1辆汽车的两条线路。

然后我有两个组合按国家和城市进行过滤(我将简化仅考虑城市),在底部我想使用以下公式计算:

  • 鉴于组合中选定的城市,我可以添加多少辆汽车(和房屋)。一旦我定义了范围,我就得到了下面的公式。也就是说,安大略省有3辆车,即3:

    =IF(A15<>"All",SUMIF(RegionRange,A15,Column1Range),SUM(Column1Range))

  • 实际问题。鉴于组合中选定的城市,有多少不同的人在该城市拥有汽车。也就是说,虽然安大略省有3辆车,但只有2人(鲍勃和查理)。看一下关于how to count unique values in Excel的问题,我可以使用以下公式,但这不会考虑组合中的过滤器:

    =SUM(IF(FREQUENCY(MATCH(Column1Range,Column1Range,0),MATCH(Column1Range,Column1Range,0))>0,1))

我的问题是我可以使用什么公式而不是前一个公式来考虑组合中的过滤器。

请注意,我希望数据保持可见并更新总数,因为我在组合中选择了一些东西,所以我想要的是计算它的公式,而不是使用自动过滤器。

1 个答案:

答案 0 :(得分:2)

您可以使用此数组公式:

=SUM(IF(($B$2:$B$10=$H$1)*($D$2:$D$10>0),1/COUNTIFS($C$2:$C$10,$C$2:$C$10,$D$2:$D$10,">0",$B$2:$B$10,$H$1)))

作为数组公式,需要使用Ctrl-Shift-Enter确认,而不是在退出编辑模式时输入。如果操作正确,那么Excel会将{}放在公式周围。

enter image description here