FILTER(A2:C48,ISERROR(FIND("牛肉",B2:B48))*ISERROR(FIND("花生",B2:B48)))的两个逻辑值是相乘后返回最终true逻辑值吗,分析公式步骤
浅谈出口账务和excel函数 是的,ISERROR(...) * ISERROR(...) 这里是数组运算,两个逻辑值相乘后,TRUE 当 1、FALSE 当 0,结果再被 FILTER 当作“保留/不保留”的条件。
ISERROR(FIND("牛肉",B2:B48)) * ISERROR(FIND("花生",B2:B48))
· 如果 B 列某行包含“牛肉”,返回一个数字(位置)
包含“花生”返回数字,不包含返回 #VALUE!。
ISERROR(FIND("牛肉",B2:B48))
· 找不到“牛肉” → FIND 出错 → ISERROR 返回 TRUE
· 找到“牛肉” → FIND 正常 → ISERROR 返回 FALSE
ISERROR(FIND("花生",B2:B48))
行 含牛肉? 含花生? 不 contains 牛肉 不 contains 花生 相乘
第2行 是 否 FALSE(0) TRUE(1) 0
第3行 否 是 TRUE(1) FALSE(0) 0
第4行 否 否 TRUE(1) TRUE(1) 1
第5行 是 是 FALSE(0) FALSE(0) 0
· 结果为 0 → 当作 FALSE → 排除该行
所以最终效果是:只保留 B 列既不含“牛肉”也不含“花生”的行,返回对应的 A:C 三列数据。
1. 相乘确实是逻辑运算,但底层是 1 和 0 的乘法。
3. 用 * 而不是 AND,是因为 AND 通常只返回单个值,不能逐行数组运算;* 可以生成数组,适合 FILTER。
4. 如果某行 B 列是空单元格,FIND 也会返回错误,ISERROR 为 TRUE,该行会被保留。
(ISERROR(FIND("牛肉",B2:B48))) *
(ISERROR(FIND("花生",B2:B48)))
ISERROR(FIND("牛肉",B2:B48)) *
ISERROR(FIND("花生",B2:B48))
一句话:两个 ISERROR 相乘,是把两个“是否不包含”的判断做逐行“与”运算,结果 1 保留、0 排除,最终交给 FILTER 筛选。