如何从Google表格各工作表提取数据?批量填充指定单元格方法
解决Google多工作表数据提取及批量引用问题
一、批量将Sheet1-Sheet199的B2填充到Sheet200的A列
方法1:Google Apps Script(高效推荐)
通过脚本自动完成批量填充,步骤如下:
- 打开目标Google表格,点击顶部菜单栏「扩展程序」→「Apps脚本」
- 删除编辑器默认代码,粘贴以下脚本:
function fillSheet200() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const targetSheet = ss.getSheetByName('Sheet200'); // 可选:清空目标列原有内容 targetSheet.getRange('A:A').clearContent(); const sheets = ss.getSheets(); let rowNum = 1; sheets.forEach(sheet => { const sheetName = sheet.getName(); if (sheetName !== 'Sheet200') { const b2Value = sheet.getRange('B2').getValue(); targetSheet.getRange(rowNum, 1).setValue(b2Value); rowNum++; } }); }
- 点击编辑器顶部「运行」按钮,首次运行需按提示完成权限授权
- 运行结束后,Sheet200的A列会自动填充所有其他工作表的B2单元格内容
方法2:数组公式+自定义函数(无脚本方案)
如果不想使用脚本,可通过生成工作表名称列表+间接引用实现:
- 同样打开Apps Script编辑器,添加自定义函数:
function GETALLSHEETNAMES() { const ss = SpreadsheetApp.getActiveSpreadsheet(); return ss.getSheets().map(sheet => sheet.getName()).filter(name => name !== 'Sheet200'); }
- 返回表格,在Sheet200的A1单元格输入
=GETALLSHEETNAMES(),自动生成Sheet1到Sheet199的名称列表 - 在A1单元格的公式结果上,右键选择「复制」→「粘贴为数值」,固定工作表名称
- 在A1单元格(或新列)输入
=INDIRECT(A1&"!B2"),下拉填充至所有行,即可批量获取对应工作表的B2值
二、通用的多工作表数据提取方法
1. 基础跨表引用
提取单个工作表的数据,直接使用格式:=工作表名称!单元格/区域地址,例如=Sheet1!A1:C10可引用Sheet1的A1至C10区域。
2. 批量提取统一区域数据到汇总表
若需将所有工作表的相同区域(如每个表的A1:B10)汇总到一个工作表,可使用以下脚本:
function extractAllSheetsData() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const summarySheet = ss.getSheetByName('汇总表'); // 需先创建名为「汇总表」的工作表 summarySheet.clearContents(); ss.getSheets().forEach(sheet => { const targetData = sheet.getRange('A1:B10').getValues(); // 追加数据时带上工作表名称作为标识 targetData.forEach(row => { summarySheet.appendRow([sheet.getName(), ...row]); }); }); }
内容的提问来源于stack exchange,提问作者Zeek Aran
相关产品推荐
相关产品推荐

