大数跨境

FILTER(A2:C48,ISERROR(FIND("牛肉",B2:B48))*ISERROR(FIND("花生",B2:B48)))的两个逻辑值是相乘后返回最终true逻辑值吗,分析公式步骤

FILTER(A2:C48,ISERROR(FIND("牛肉",B2:B48))*ISERROR(FIND("花生",B2:B48)))的两个逻辑值是相乘后返回最终true逻辑值吗,分析公式步骤 浅谈出口账务和excel函数
2026-09-26
5
是的,ISERROR(...) * ISERROR(...) 这里是数组运算,两个逻辑值相乘后,TRUE 当 1、FALSE 当 0,结果再被 FILTER 当作“保留/不保留”的条件。

公式拆解

```
FILTER(A2:C48,
  ISERROR(FIND("牛肉",B2:B48)) * ISERROR(FIND("花生",B2:B48))
)
```

第 1 步:FIND 查找

```
FIND("牛肉",B2:B48)
```

· 如果 B 列某行包含“牛肉”,返回一个数字(位置)
· 如果不包含,返回 #VALUE! 错误

同理:

```
FIND("花生",B2:B48)
```

包含“花生”返回数字,不包含返回 #VALUE!。

第 2 步:ISERROR 判断

```
ISERROR(FIND("牛肉",B2:B48))
```

· 找不到“牛肉” → FIND 出错 → ISERROR 返回 TRUE
· 找到“牛肉” → FIND 正常 → ISERROR 返回 FALSE

所以这一列的含义是:“不包含牛肉”为 TRUE。

同理:

```
ISERROR(FIND("花生",B2:B48))
```

含义是:“不包含花生”为 TRUE。

第 3 步:两个逻辑值相乘

Excel/WPS 里:

· TRUE * TRUE = 1
· TRUE * FALSE = 0
· FALSE * FALSE = 0

逐行计算:

行 含牛肉? 含花生? 不 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

第 4 步:FILTER 使用结果

FILTER 的第二个参数要求是逻辑数组:

· 结果为 1 → 当作 TRUE → 保留该行
· 结果为 0 → 当作 FALSE → 排除该行

所以最终效果是:只保留 B 列既不含“牛肉”也不含“花生”的行,返回对应的 A:C 三列数据。

关键结论

1. 相乘确实是逻辑运算,但底层是 1 和 0 的乘法。
2. 它等价于“与”关系:
   ```
   不包含牛肉  AND  不包含花生
   ```
3. 用 * 而不是 AND,是因为 AND 通常只返回单个值,不能逐行数组运算;* 可以生成数组,适合 FILTER。
4. 如果某行 B 列是空单元格,FIND 也会返回错误,ISERROR 为 TRUE,该行会被保留。

更易读的替代写法

```
FILTER(A2:C48,
  (ISERROR(FIND("牛肉",B2:B48))) *
  (ISERROR(FIND("花生",B2:B48)))
)
```

或者用 ISNUMBER 反过来写:

```
FILTER(A2:C48,
  ISERROR(FIND("牛肉",B2:B48)) *
  ISERROR(FIND("花生",B2:B48))
)
```

意思一样:排除同时或分别含这两个词的行。

一句话:两个 ISERROR 相乘,是把两个“是否不包含”的判断做逐行“与”运算,结果 1 保留、0 排除,最终交给 FILTER 筛选。

【声明】内容源于网络
0
0
浅谈出口账务和excel函数
1234
内容 1525
粉丝 0
浅谈出口账务和excel函数 1234
总阅读26.7k
粉丝0
内容1.5k