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

Office 365中如何用动态数组公式按值列表筛选表格?

Office 365动态数组多值筛选问题解决方法

问题重现

尝试通过动态数组(如A1#格式),基于B2#的数值列表筛选E2#对应的表格,但以下公式均返回#N/A或未得到预期结果:

  • =FILTRE(E2#; PRENDRE(E2#;;1)=B2#)(法语版函数)
  • =FILTER(E2#, TAKE(E2#,,1)=B2#)(英语版函数)
  • =BYROW(B2#; LAMBDA(x; FILTRE(E2#; PRENDRE(E2#;;1)=PRENDRE(B2#;LIGNE(x)))))(法语版BYROW)
  • =BYROW(B2#, LAMBDA(x, FILTER(E2#,TAKE(E2#;;1)=TAKE(B2#, ROW(x)))))(英语版BYROW)
    使用XLOOKUP/RECHERCHEX也未达成目标。

解决方案

方法1:FILTER + MATCH(推荐,高效一次性筛选)

核心是用MATCH判断E2#第一列的值是否存在于B2#列表中,再用ISNUMBER转换为布尔数组供FILTER识别:

英语版公式:

=FILTER(E2#, ISNUMBER(MATCH(TAKE(E2#,,1), B2#, 0)))

法语版公式:

=FILTRE(E2#; ESTNUM(RECHERCHEV(PRENDRE(E2#;;1); B2#; 1; FAUX)))

原理:

  • TAKE(E2#,,1)提取E2#的第一列数据
  • MATCH(..., B2#, 0)检查每个值是否在B2#列表中,存在则返回位置,否则返回#N/A
  • ISNUMBER/ESTNUM将结果转为TRUE/FALSE的一维布尔数组,FILTER基于此返回符合条件的整行

方法2:BYROW + VSTACK(逐值筛选后合并)

如果需要按B2#的顺序保留对应筛选结果,可以用BYROW遍历每个值,再合并结果:

英语版公式:

=DROP(REDUCE("", B2#, LAMBDA(acc, val, VSTACK(acc, FILTER(E2#, TAKE(E2#,,1)=val)))), 1)

法语版公式:

=SUPPR(DYNAMIQUE(REDUIRE("", B2#; LAMBDA(acc; val; EMPILER(acc; FILTRE(E2#; PRENDRE(E2#;;1)=val))))); 1)

原理:

  • BYROW遍历B2#的每个值val
  • 对每个val用FILTER筛选E2#中第一列匹配的行
  • REDUCE+VSTACK将所有筛选结果逐行合并,DROP/SUPPR(DYNAMIQUE)移除初始的空行占位

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 20:52:10