如何在Google Sheets中按A列相同条件合并两行并处理布尔值?
在Google Sheets中按A列合并行并按规则处理布尔值
需求说明
当A列内容相同时合并对应行,布尔值列的合并规则为:仅当两行对应单元格均为FALSE时结果为FALSE,其余所有情况(一行TRUE一行FALSE/两行都是TRUE)结果为TRUE
解法1:使用UNIQUE + BYROW + BYCOL组合公式
假设原始数据范围是A2:C(A列为分组标识,B、C为布尔值列),在空白列(比如E2)输入以下公式:
=BYROW(UNIQUE(A2:A), LAMBDA(id, {id, BYCOL(FILTER(B2:C, A2:A=id), LAMBDA(col, NOT(AND(col=FALSE))))}))
公式拆解
UNIQUE(A2:A):提取A列所有不重复的标识值,作为合并后的行标识BYROW(..., LAMBDA(id, ...)):遍历每个唯一标识,处理对应分组的布尔值FILTER(B2:C, A2:A=id):筛选出当前标识下的所有布尔值行BYCOL(..., LAMBDA(col, NOT(AND(col=FALSE)))):对每一列的布尔值做判断:如果列中所有值都是FALSE,AND(col=FALSE)返回TRUE,取反后得到FALSE;只要有一个TRUE,就返回TRUE
解法2:使用QUERY + ARRAYFORMULA组合公式
同样基于A2:C的原始数据,公式如下:
=ARRAYFORMULA({UNIQUE(A2:A), NOT(QUERY({A2:A, B2:C}, "select min(B), min(C) where A is not null group by A label min(B) '', min(C) ''")=FALSE)})
公式拆解
QUERY(...):按A列分组,对B、C列取最小值(Google Sheets中FALSE等价于0,TRUE等价于1,最小值为0意味着该列所有值都是FALSE)NOT(...=FALSE):将分组后的结果与FALSE对比,若结果为FALSE(即原分组所有值都是FALSE),取反后得到最终的FALSE;否则得到TRUE
示例验证
原始数据
| A列 | B列 | C列 |
|---|---|---|
| X | TRUE | FALSE |
| X | FALSE | FALSE |
| Y | FALSE | TRUE |
| Y | FALSE | FALSE |
合并后期望结果
| A列 | B列 | C列 |
|---|---|---|
| X | TRUE | FALSE |
| Y | FALSE | TRUE |
内容的提问来源于stack exchange,提问作者MAA
相关产品推荐
相关产品推荐

