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

如何在Excel中自动生成包含指定字段的工作表名称列表?

实现Excel自动填充"Used on Other Forms"列的方案

核心结论

完全可行,可通过Excel公式(分版本)自动遍历所有工作表,收集包含相同Field的表单名称并整理为列表。

你之前的公式失效原因

你得到的公式逻辑完全偏离需求:

  • CELL("filename")仅获取当前工作表的文件路径,导致INDIRECT始终引用当前表的A列,没有遍历其他工作表
  • 条件判断COUNTIF(..., "Field")是检查当前表A列是否等于文本"Field",而非匹配当前行的Field值
  • 旧版本Excel中这类数组公式需要按Ctrl+Shift+Enter触发,但即使触发,逻辑错误也无法得到正确结果

解决方案(分Excel版本)

前提准备:定义工作表名称数组

先定义一个可复用的名称,用于快速获取所有工作表名称:

  1. 点击「公式」选项卡 → 「定义名称」
  2. 名称输入SheetNames
  3. 引用位置根据Excel版本选择:
    • Excel 365/2021:=TEXTAFTER(GET.WORKBOOK(1), "]")
    • 旧版Excel(2019及更早):=MID(GET.WORKBOOK(1), FIND("]", GET.WORKBOOK(1))+1, 255)
  4. 点击确定,将文件保存为.xlsm格式(因使用宏表函数GET.WORKBOOK)

方案1:Excel 365/2021(支持动态数组)

在任意工作表的Used on Other Forms列(假设为D列)的第2行(对应A2的Field)输入以下公式,下拉填充即可:

=TEXTJOIN(", ",, FILTER(SheetNames, COUNTIF(INDIRECT("'"&SheetNames&"'!A:A"), A2)>0))

公式说明:

  • FILTER(SheetNames, ...):筛选出所有包含当前Field(A2)的工作表
  • COUNTIF(INDIRECT(...), A2):动态引用每个工作表的A列,检查是否存在当前Field
  • TEXTJOIN(", ",, ...):将筛选后的工作表名称用逗号连接成字符串

方案2:旧版Excel(2019及更早)

在D2单元格输入以下公式,按Ctrl+Shift+Enter触发数组公式,然后下拉填充:

=TEXTJOIN(", ", TRUE, IF(COUNTIF(INDIRECT("'"&INDEX(SheetNames, ROW(INDIRECT("1:"&COUNTA(SheetNames))))&"'!A:A"), A2)>0, INDEX(SheetNames, ROW(INDIRECT("1:"&COUNTA(SheetNames)))), ""))

公式说明:

  • ROW(INDIRECT("1:"&COUNTA(SheetNames))):生成工作表数量的序列,遍历所有工作表
  • INDEX(SheetNames, ...):依次取出每个工作表名称
  • IF(...):判断当前工作表是否包含目标Field,是则保留名称,否则返回空
  • TEXTJOIN:将有效名称连接为字符串

效果验证

以你举例的场景:工作表A、B、C、D、E的A列均包含"Date of Birth",则E工作表中该字段对应的D列单元格会显示A, C, E,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 13:17:29