如何用单个公式返回列1中与列2同行匹配次数最少的文本值
解决方案
假设任务被分配人数据在A2:A列,任务实际完成人数据在B2:B列,可使用以下单个公式返回完成自身被分配任务次数最少的人:
=INDEX(A2:A, MATCH(MIN(ARRAYFORMULA(COUNTIFS(A2:A, A2:A, B2:B, A2:A))), ARRAYFORMULA(COUNTIFS(A2:A, A2:A, B2:B, A2:A)), 0))
公式拆解
COUNTIFS(A2:A, A2:A, B2:B, A2:A):按被分配人分组,统计每个人自己完成自身分配任务的次数(即A、B列同行值相等的记录数)ARRAYFORMULA:让COUNTIFS返回对应每个A列值的统计结果数组,而非单个值MIN(...):从统计结果中提取最小的次数值MATCH(...):定位这个最小次数在统计数组中第一次出现的位置INDEX(A2:A, ...):根据定位的位置,返回对应的被分配人
补充说明
如果存在多个完成自身任务次数并列最少的人,公式会返回第一个出现的那个人;若需返回所有符合条件的人,可将公式调整为:
=TEXTJOIN(", ", TRUE, UNIQUE(FILTER(A2:A, COUNTIFS(A2:A, A2:A, B2:B, A2:A)=MIN(ARRAYFORMULA(COUNTIFS(A2:A, A2:A, B2:B, A2:A))))))
内容的提问来源于stack exchange,提问作者Hudson Rains
相关产品推荐
相关产品推荐

