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

Google Sheet多工作表列名相同位置不同 按列名合并生成总表

Google Sheet多表按列名动态合并解决方案

公式方案(适合表数量不多、数据量较小的场景)

无需手动匹配列位置,只要各工作表的表头拼写和id、date、amount完全一致即可自动适配,操作步骤:

  • 在总表(Master)的空白列(比如D列)依次填写所有需要合并的工作表名称,不要包含Master表本身
  • 在Master表A1单元格输入={"id","date","amount"}设置固定总表头
  • 在A2单元格输入如下公式即可自动生成全部合并数据:
    =REDUCE({"","",""}, D1:D, LAMBDA(acc, sheet_name, IF(sheet_name="", acc, LET(header_row, INDIRECT("'"&sheet_name&"'!1:1"),id_col, XMATCH("id", header_row, 0),date_col, XMATCH("date", header_row, 0),amount_col, XMATCH("amount", header_row, 0),data_range, INDIRECT("'"&sheet_name&"'!A2:"&ADDRESS(ROWS(INDIRECT("'"&sheet_name&"'!A:A")), MAX(id_col, date_col, amount_col))),filtered, FILTER(CHOOSECOLS(data_range, id_col, date_col, amount_col), CHOOSECOLS(data_range, id_col)<>""),VSTACK(acc, filtered))))

公式逻辑:遍历所有指定工作表,先在对应表的第一行匹配三个字段的列索引,再按指定顺序提取对应列数据,跳过空行后汇总,完全不依赖固定列号。

脚本方案(适合表数量多、数据量大的场景)

如果公式加载卡顿,可以用Apps Script实现,一次配置后续可一键刷新:

  • 点击顶部菜单栏「扩展程序」>「Apps Script」进入脚本编辑器
  • 替换默认代码为以下内容:
function mergeSheetsToMaster() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const allSheets = ss.getSheets();
  const targetFields = ['id', 'date', 'amount'];
  const mergeResult = [targetFields];

  allSheets.forEach(sheet => {
    // 跳过Master总表本身
    if (sheet.getName() === 'Master') return;
    const sheetData = sheet.getDataRange().getValues();
    const header = sheetData[0].map(item => item.trim());
    // 匹配三个字段对应的列索引
    const colIndexMap = targetFields.map(field => header.indexOf(field));
    // 逐行提取数据,跳过空行
    for (let i = 1; i < sheetData.length; i++) {
      const row = colIndexMap.map(idx => idx > -1 ? sheetData[i][idx] : '');
      if (row[0]) mergeResult.push(row);
    }
  });
  // 写入总表,不存在则自动创建
  const masterSheet = ss.getSheetByName('Master') || ss.insertSheet('Master');
  masterSheet.clearContents();
  masterSheet.getRange(1, 1, mergeResult.length, mergeResult[0].length).setValues(mergeResult);
}
  • 保存代码后点击运行,完成权限授权即可生成总表。后续各工作表数据更新后,重新运行一次脚本即可刷新总表数据。

注意事项

  • 所有工作表的表头需保证拼写和id、date、amount完全一致,不要有多余空格或大小写差异
  • 如果表头不在工作表的第一行,可对应调整公式/脚本里的表头行参数即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 02:36:01