Google Sheet求和遇#REF!错误求助:提取指定命名工作表数据
解决Google Sheet中引用未创建工作表导致#REF!错误的求和问题
方法1:内置函数组合(无需脚本)
使用GET_WORKBOOK_TABS、REGEXMATCH、INDIRECT和IFERROR的组合,自动筛选符合命名规则的工作表并求和,同时忽略未创建的表:
=SUM(IFERROR(INDIRECT(FILTER(GET_WORKBOOK_TABS(), REGEXMATCH(GET_WORKBOOK_TABS(), "^io\d+08$"))&"!E28"), 0))
各部分作用:
GET_WORKBOOK_TABS():获取当前文档所有工作表的名称列表REGEXMATCH(..., "^io\d+08$"):筛选名称以io开头、中间包含任意数字、结尾为08的工作表(完全匹配io208、io308这类格式)INDIRECT(...)&"!E28":将筛选后的工作表名称转为对应的E28单元格引用IFERROR(..., 0):把未创建工作表导致的#REF!错误转为0,避免影响求和结果SUM():对所有有效单元格的数值求和
方法2:自定义Apps Script函数(灵活扩展)
如果需要更灵活的规则控制,可编写自定义函数:
- 打开Google Sheet,点击「工具」→「脚本编辑器」
- 粘贴以下代码:
function SUM_SHEETS_PATTERN(pattern, cellRef) { const ss = SpreadsheetApp.getActiveSpreadsheet(); const sheets = ss.getSheets(); let total = 0; const regex = new RegExp(pattern); sheets.forEach(sheet => { const name = sheet.getName(); if (regex.test(name)) { try { const value = sheet.getRange(cellRef).getValue(); total += typeof value === 'number' ? value : 0; } catch(e) { // 忽略单元格不存在或数据类型错误的情况 } } }); return total; }
- 保存脚本(命名为任意名称,比如
SheetSum),返回表格 - 在单元格中调用函数:
=SUM_SHEETS_PATTERN("^io\d+08$", "E28")
这个函数会遍历所有工作表,匹配指定的正则模式,累加符合条件工作表中目标单元格的数值,自动忽略不存在的表或错误。
方法3:手动维护列表(适合少量工作表)
如果目标工作表数量不多,可直接用IFERROR逐个包裹引用,新增工作表时手动添加:
=SUM(IFERROR(io208!E28,0), IFERROR(io308!E28,0), IFERROR(io408!E28,0))
内容的提问来源于stack exchange,提问作者Tamour Cheema
相关产品推荐
相关产品推荐

