【问题标题】:Distinct count of values in a column if two other cells match如果其他两个单元格匹配,则列中值的不同计数
【发布时间】:2019-10-21 21:10:36
【问题描述】:

使用数组公式来计算一列中的不同值,在其他两个单元格匹配的行中。对不起,如果我不能解释得更好。最好是向您展示我创建的公式并提供一些示例数据:

表 1

Column A      Column B  
Period 101    Code X
Period 309    Code Y
Period 101    Code Y
Period 101    Code Z
Period 404    Code Y
Period 101    Code X
Period 101    Code X
Period 404    Code X
Period 404    Code Z

表 2

Column A      Column B (where the formula should be)
Code X        2
Code Y        3
Code Z        2

基本上,我想计算工作表 1 列 A 中的不同值,只有工作表 1 列 B 中的值与工作表 2 列 A 中的值匹配。我已经提供了三个代码值的预期结果。

我已尝试使用以下公式,但无法计算两个单元格匹配的另一列中的不同值:

{=SUM(--(FREQUENCY(IF(C5:C11=G5,MATCH(B5:B11,B5:B11,0)),ROW(B5:B11)-ROW(B5)+1)>0))} 

请忽略公式中使用的行和列,并且工作表 1 上的 A 列和 B 列中的值都出现多次,但工作表 2 上的第一列中的值只出现一次。

我很好奇有人会如何解决这个问题。提前谢谢你。

【问题讨论】:

    标签: excel excel-formula


    【解决方案1】:

    警告:这个答案不太可能对 OP 有用,因为这些技术目前仅适用于 Excel Insiders

    但一旦这些新功能可用于主流,它们将改变游戏规则。

    这使用了 Excel 即将推出的新 Dynamic Array 功能。

    要从 B 列创建唯一值列表,请将这个公式放在一个单个单元格中。 Excel 将根据需要“溢出”到尽可能多的行中,以从 B 列返回唯一的值列表。比如我用过单元格E2

    =UNIQUE(FILTER($B:$B,$B:$B<>""))
    

    现在,将这个公式放在下一个相邻的单元格中,我使用了F2

    =COUNTA(UNIQUE(FILTER($A:$A,$B:$B=$E$2)))
    

    同样,您只需将这个公式放在一个单元格中,无需复制下来。 Excel 会根据需要将结果“溢出”到尽可能多的单元格中,以匹配列 E

    【讨论】:

      【解决方案2】:

      您的公式与您的示例数据不匹配,但我们假设如下:

      H5中的公式:

      =SUM(--(FREQUENCY(IF(C$5:C$13=G5,MATCH(B$5:B$13,B$5:B$13,0)),ROW(B$5:B$13)-ROW(B$5)+1)>0))
      

      通过CtrlShiftEnter作为数组输入并向下拖动

      注意半绝对单元格引用(您使用了相对引用)+ 我的范围比您的范围大(您仅从 C5:C11 查看)

      【讨论】:

      • 谢谢JvdV,确实我提到了错误的参考。下次我会相应地更新它们。我不知道我可以使用对第三列的引用,但现在很清楚了。干杯!
      • 你能否扩展它以匹配 D 列中的代码?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-18
      • 2016-06-19
      • 1970-01-01
      • 2019-11-20
      • 1970-01-01
      • 2019-03-25
      • 1970-01-01
      相关资源
      最近更新 更多