Google Sheets数组查询嵌套双逻辑表达式的实现问题
Google Sheets 排班公式扩展问题
现有一个排班生成器公式,可根据选中日期($B$2)在Pilots工作表中筛选对应日期列标记为"P1"的成员:
=iferror(query(ARRAYFORMULA(IF(INDEX(Pilots!$D$17:$140, , MATCH($B$2, Pilots!$D$1:$1, 0)) = "P1", Pilots!$D$17:$D$140, "")),"select * where Col1 is not null",0))
现在需要扩展公式,要求同时满足Pilots!$H$17:$140为TRUE(复选框选中),并将结果填充到Schedule Builder!I31:J37区域。
修改后的公式
=IFERROR(QUERY( ARRAYFORMULA( IF( (INDEX(Pilots!$D$17:$140, , MATCH($B$2, Pilots!$D$1:$1, 0)) = "P1") * (Pilots!$H$17:$H$140 = TRUE), Pilots!$D$17:$D$140, "" ) ), "select * where Col1 is not null", 0 ))
公式说明
- 在
ARRAYFORMULA的条件中,用*连接两个判断条件,实现逻辑与(同时满足):- 第一个条件:对应日期列的值为"P1"
- 第二个条件:H列的复选框为TRUE
*在数组公式中会将布尔值转换为1/0,只有两个条件都为TRUE(即1*1=1)时,才返回对应的成员姓名,否则返回空字符串- 外层的
QUERY和IFERROR保持原有逻辑,过滤空值并处理错误
如果需要返回多列数据(比如姓名+其他信息),可调整Pilots!$D$17:$D$140为对应多列范围(例如Pilots!$D$17:$E$140),直接保留数组返回即可。
内容的提问来源于stack exchange,提问作者Sascha N.
相关产品推荐
相关产品推荐

