filter是默认返回1或true吗
浅谈出口账务和excel函数 不是。FILTER 不是默认返回 1,而是它把第二个参数里的非 0 数值都当作 TRUE,把 0 当作 FALSE。
FILTER(数组, 条件) 中,条件参数要求是逻辑值数组:
· 其他非 0 数字(如 2、-1、0.5)也被当作 TRUE
所以不是“默认返回 1”,而是你给的条件算出来是 1,它就当 TRUE 用。
ISERROR(FIND("牛肉",B2:B48)) * ISERROR(FIND("花生",B2:B48))
这里 1 和 0 是乘法算出来的,不是 FILTER 默认给的。
FILTER(A2:C48, ISERROR(FIND("牛肉",B2:B48)))
这时第二个参数直接是 TRUE/FALSE 数组,FILTER 照样能识别,不需要先变成 1/0。
1 / 0 数字 识别,1=TRUE,0=FALSE
FILTER 不默认返回 1。它要求条件能表达“真/假”,1 和 0 只是真假的数字形式。你的公式里相乘得到 1 或 0,是 TRUE/FALSE 参与乘法后的结果,FILTER 再按“非 0 保留、0 排除”来筛选。不是“FILTER 返回 TRUE”,而是:
FILTER 的第二个参数(条件)里,1 被当成 TRUE、0 被当成 FALSE 来用。FILTER 本身返回的是筛选后的数据,不是 TRUE/FALSE。
分清楚两个东西:
1. 第二个参数:条件
```
ISERROR(...) * ISERROR(...)
```
这部分算出来是 1 或 0 的数组。
· 1 → 被 FILTER 当作 TRUE → 保留这一行
· 0 → 被 FILTER 当作 FALSE → 排除这一行
所以是条件值被当作 TRUE/FALSE,不是 FILTER 返回 TRUE。
2. FILTER 的返回值:数据
```
FILTER(A2:C48, 条件)
```
它返回的是 A2:C48 里满足条件的那些行,比如:
```
张三 牛肉面 20
李四 花生米 15
```
而不是返回 TRUE。
一句话
· 条件:1/0 被当作 TRUE/FALSE
· FILTER 结果:返回筛选出来的数据行
所以不能说“FILTER 返回 TRUE”,准确说法是:条件里的 1 被 FILTER 视为 TRUE,从而保留对应行。