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

超200列二维数组中搜索文章ID,如何返回对应工作表名称?

解决多列数据下的文章ID归属工作表查询问题

针对你200+列的大规模数据集,这里提供两个可行的公式方案,替代逐个编写Filter的低效方式:

方案1(支持Excel 365/2021,逻辑更直观)

=TEXTJOIN(", ", TRUE, UNIQUE(FILTER(B19:B, BYCOL(C19:100, LAMBDA(col, COUNTIF(col, C3))>0))))

公式说明:

  • BYCOL(C19:100, LAMBDA(col, COUNTIF(col, C3))>0):遍历所有存放文章ID的列(C19到第100列),检查每一列是否包含C3的目标ID,返回对应B列行的布尔判断结果(有匹配则为TRUE)。
  • FILTER(B19:B, ...):根据布尔结果筛选出对应的工作表名称。
  • UNIQUE(...):避免同一工作表因多列匹配同一ID而重复显示。
  • TEXTJOIN(", ", TRUE, ...):将筛选结果用逗号分隔合并成文本。

方案2(兼容旧版Excel)

如果你的Excel版本不支持LAMBDA函数,用MMULT实现行列匹配汇总:

=TEXTJOIN(", ", TRUE, FILTER(B19:B, MMULT(--(C19:100=C3), SEQUENCE(COLUMNS(C19:100),,1,0))>0))

公式说明:

  • --(C19:100=C3):将ID匹配的布尔结果转换为0/1的二维数组。
  • MMULT(..., SEQUENCE(...)):通过矩阵乘法,把每一行的所有列匹配结果求和,得到每行是否存在匹配(和>0则表示该行有至少一列匹配目标ID)。
  • 后续的FILTER和TEXTJOIN逻辑同方案1。

原公式报错原因

你之前的公式存在两个核心问题:

  1. 范围错误:B19:A是无效的单元格区域,正确的工作表名称范围应为B19:B。
  2. 多列匹配处理不当:C19:100=C3返回的是二维数组,而FILTER要求筛选条件是和目标范围行数一致的一维数组,直接使用会导致维度不匹配报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 08:12:43