You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Sheets中AND函数嵌套复杂函数运行失效问题求助

问题成因

AND()是Google Sheets中的聚合函数,本身不支持逐行数组运算:当你传入整列范围的判断结果(比如REGEXMATCH(Pockets2.0!C:C,"MTC-.*$")返回的整列布尔数组)时,AND()不会对每一行单独返回判断结果,只会把整列所有布尔值聚合计算为单个TRUE/FALSE值。
这会导致IF()返回的结果长度和FILTER()要求匹配的数据源行数不一致,直接触发运行错误。当你移除AND()、直接保留单个REGEXMATCH判断时,REGEXMATCH原生支持数组逐行计算,会返回和C列行数一致的布尔数组,因此公式可以正常运行。
另外你写的AND(判断条件, TRUE())属于完全冗余的写法,第二个参数TRUE()不会对判断结果产生任何影响,没有实际作用。

修复方法

在数组运算场景(包括FILTER、ARRAYFORMULA等需要逐行匹配的函数内部),不要使用AND()/OR()做逻辑判断:逐行逻辑与用*(布尔乘法)实现,逐行逻辑或用+(布尔加法)实现,运算后会返回和数据源行数一致的布尔数组,符合函数参数要求。
由于你当前AND内的第二个参数是无意义的TRUE(),直接删除AND函数、保留REGEXMATCH判断即可,修正后的完整公式如下:

=IF(
  K22,
  ARRAY_CONSTRAIN(
    FILTER(
      Pockets2.0!A:E,
      Pockets2.0!A:A,
      REGEXMATCH(Pockets2.0!C:C,"MTC"),
      K22=Pockets2.0!A:A,
      O22=IF(
        REGEXMATCH(Pockets2.0!C:C,"MTC-.*$"),
        -1,
        1
      ) * Pockets2.0!D:D
    ),
    1,
    5
  ),
)

如果后续需要在这个IF判断中增加多个逐行匹配的条件,用括号包裹每个条件后相乘即可,例如要同时满足C列匹配MTC规则、B列不为空,写法为:
(REGEXMATCH(Pockets2.0!C:C,"MTC-.*$"))*(Pockets2.0!B:B<>"")


内容的提问来源于stack exchange,提问作者Yeison Agudelo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 18:22:20