【问题标题】:Count unique values IF certain text is found如果找到某些文本,则计算唯一值
【发布时间】:2016-08-27 13:32:54
【问题描述】:

我想计算每个名称的唯一值。下面的图片将解释我需要什么。在这里您可以看到 Second 在 name 列中出现了 5 次,但它只包含 2 个唯一值。我尝试过频率方法,但它计算所有唯一值而不考虑名称。有什么帮助或建议吗?

【问题讨论】:

    标签: excel excel-formula excel-2007


    【解决方案1】:

    我无法从该屏幕截图中看到您的行号,因此我假设您的源表的标题位于第 3 行。

    F5中,数组公式**

    =COUNT(1/FREQUENCY(IF(B$4:B$16=E5,C$4:C$16),C$4:C$16))

    并复制下来。

    要为您的两个源范围合并定义名称,请转到 名称管理器公式选项卡)并创建三个新的定义名称:

    姓名LRow 参考=MATCH(REPT("z",255),$B:$B)

    姓名Names 参考=$B$4:INDEX($B:$B,LRow)

    姓名Values 参考=$C$4:INDEX($C:$C,LRow)

    数组公式就变成了:

    =COUNT(1/FREQUENCY(IF(Names=E5,Values),Values))

    问候

    **数组公式的输入方式与“标准”公式不同。不是只按 ENTER,而是先按住 CTRL 和 SHIFT,然后再按 ENTER。如果操作正确,您会注意到 Excel 在公式周围放置了大括号 {}(尽管不要尝试自己手动插入)。

    【讨论】:

    • 我更新了截图。如果我们只知道列而不知道名称所在的行怎么办。就像我们不能选择整列一样吗? (B:B)
    • 除非您实际上将数据一直延伸到第 1048576 行,否则引用整个列将是一个糟糕的主意。这里有两种通用方法: 1) 为被引用的最后一行选择一个适当低但足够的上限; 2) 使您的范围动态化,以便它们随着您的数据扩展/收缩而自动调整。如果你愿意,我可以告诉你如何做后者。
    • 已添加。我不知道你的最新评论是什么意思 - 抱歉。
    • B$4:B$16=E5我怎么能这样用B$4:B$16="First"
    • 如你所愿,包括 First 周围的引号。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-04
    • 1970-01-01
    相关资源
    最近更新 更多