基于第三列条件统计两列合并后唯一值的问题求助
解决Excel中多列合并后统计符合条件的唯一值数量问题
核心需求
当第三列(M列)值为Ignore时,统计前两列(K、L列)所有值合并后的唯一值总数,预期结果为5(涉及值a、b、c、d、e)。
问题根源
之前尝试的公式要么统计行组合唯一值(如UNIQUE(FILTER(...),TRUE,FALSE)),要么将两列对应行的值拼接成字符串(如FILTER(K:K)&FILTER(L:L)),没有实现将两列数据合并为一维序列后去重统计。
解决方案
方案1:Excel 365/2021(支持TOCOL函数)
使用TOCOL将筛选后的二维区域转为一维列,再去重统计:
=COUNTA(UNIQUE(TOCOL(FILTER(K2:L23,M2:M23="Ignore"),3)))
FILTER(K2:L23,M2:M23="Ignore"):筛选出M列为Ignore的K、L列数据TOCOL(...,3):将筛选得到的二维区域转为一维列,参数3自动忽略空值UNIQUE(...):对一维列去重COUNTA(...):统计去重后的非空值数量
方案2:旧版Excel(无TOCOL函数)
使用数组公式(需按Ctrl+Shift+Enter确认输入):
=SUM(IF(FREQUENCY(IF(M2:M23="Ignore",MATCH(K2:L23,K2:L23,0)),ROW(K2:L23)-ROW(K2)+1),1))
IF(M2:M23="Ignore",MATCH(K2:L23,K2:L23,0)):筛选符合条件的行,返回每个值在K:L区域的首次出现位置FREQUENCY(...,ROW(K2:L23)-ROW(K2)+1):统计每个位置的出现频次,首次出现的位置会得到非零值SUM(IF(...,1)):统计非零频次的数量,即唯一值总数
对原有公式的问题分析
- 公式
=UNIQUE(FILTER(K2:L23,M2:M23="Ignore",""),TRUE,FALSE):第二个参数TRUE指定按行去重,返回的是K、L列的行组合唯一值,而非所有值的唯一值。 - 公式
=COUNT(LEN(UNIQUE(FILTER(K2:K23,M2:M23="Ignore",""))&FILTER(L2:L23,M2:M23="Ignore",""),FALSE,FALSE))):将K、L列对应行的值拼接成字符串(如a&b),去重统计的是拼接后的字符串,而非原始值。
内容的提问来源于stack exchange,提问作者Danny
相关产品推荐
相关产品推荐

