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

Google Sheets用SheetName()数组动态提取多工作表指定单元格咨询

Google Sheets动态引用工作表名解决方案

你的问题不是操作数组导致的,是Google Sheets默认不支持直接将存储在单元格中的值识别为工作表名的引用,你之前的写法是把B10当成了工作表名本身,而不是读取B10单元格的内容作为工作表名,所以会报错。

方案1:无需新增代码,使用内置INDIRECT函数实现动态引用

正确写法如下:

=INDIRECT("'"&B10&"'!$E$35")
  • 拼接逻辑说明:用&符号拼接字符串,首尾加单引号是兼容带空格、特殊字符的工作表名,避免识别出错,INDIRECT函数会将拼接完成的地址字符串转换为实际可读取的单元格引用。

如果需要引用单元格区域,比如获取对应工作表A1到C10的全部内容,调整写法即可:

=INDIRECT("'"&B10&"'!A1:C10")

当前版本Google Sheets支持动态数组溢出,输入公式后会自动填充对应区域的所有内容,无需手动拖动公式扩展。

方案2:修改现有自定义函数,实现批量自动读取

如果需要一次性获取所有工作表的指定单元格/区域数据,可以直接扩展你已经在使用的自定义函数,不需要额外调用复杂的get类命令,示例代码如下:

// 传入要提取的单元格地址(默认E35),返回工作表名+对应单元格值的数组
function getSheetSpecifiedValue(cellAddr = "E35") {
  const result = [];
  const allSheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
  for (let i = 0; i < allSheets.length; i++) {
    const currentSheet = allSheets[i];
    // 同时返回工作表名和对应单元格值,需要其他内容可以自行调整
    result.push([currentSheet.getName(), currentSheet.getRange(cellAddr).getValue()]);
  }
  return result;
}

调用时直接在空白单元格输入=getSheetSpecifiedValue("E35")即可,新增工作表后数据会自动同步更新,不需要手动调整每个单元格的引用公式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:21:02