如何结合ARRAYFORMULA使用COUNTIFS?求指定公式转换方法
两列重复项检测的数组公式实现(自动适配新增行)
你可以用以下两种数组公式实现需求,自动应用到新增行:
方案一:BYROW函数(推荐,新版Google Sheets适用)
直接用BYROW逐行处理,逻辑和原公式完全一致,简洁易读:
=BYROW(K2:T, LAMBDA(row, COUNTIFS(K$2:INDEX(K:K, ROW(row)), INDEX(row, 1), T$2:INDEX(T:T, ROW(row)), INDEX(row, 2))>1))
- 原理:遍历K2开始的每一行,对当前行动态截取K、T列从第2行到当前行的范围,统计与当前行K、T值匹配的次数,判断是否大于1。
- 用法:将公式放在目标列的第2行(比如U2),新增行时会自动扩展计算。
方案二:ARRAYFORMULA+MMULT(兼容旧版Google Sheets)
如果无法使用BYROW,可以用数组矩阵运算实现累积计数:
=ARRAYFORMULA(IF(ROW(K2:K)=1,,MMULT(--(ROW(K2:K)>=TRANSPOSE(ROW(K2:K)))*(K2:K=TRANSPOSE(K2:K))*(T2:T=TRANSPOSE(T2:T)),ROW(K2:K)^0)>1))
- 原理:通过
ROW(K2:K)>=TRANSPOSE(ROW(K2:K))限定只统计当前行及之前的内容,结合K、T列的匹配条件生成布尔矩阵,再用MMULT计算每行的匹配总数,判断是否大于1。 - 用法:同样放在目标列第2行,空白行会自动返回FALSE。
内容的提问来源于stack exchange,提问作者din2345
相关产品推荐
相关产品推荐

