You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

请求将含名称与4个产品Sheet的电子表格合并至单一Sheet

合并谷歌表格多个产品Sheet到单个Sheet的解决方案

搞定多个Sheet合并到一个Sheet的需求,我给你两个靠谱方案,按需选择:

方案一:手动公式法(适合快速操作,无代码基础)

如果你的4个产品Sheet表头完全一致,用这个方法最快:

  • 先在表格里新建一个Sheet,命名为「合并数据」(或你喜欢的名称)
  • 在「合并数据」的A1单元格输入以下公式:
=QUERY({产品1!A:Z;产品2!A2:Z;产品3!A2:Z;产品4!A2:Z}, "select * where Col1 is not null", 1)
  • 公式说明:
    • {产品1!A:Z;产品2!A2:Z}:用大括号纵向合并多个Sheet的区域,产品2及以后从A2开始是为了跳过重复表头
    • QUERY(..., "select * where Col1 is not null", 1):自动筛选掉空行(Col1指第一列,可根据实际非空列调整),最后一个参数1表示保留1行表头

方案二:Google Apps Script法(适合数据量大、需定期更新的场景)

如果数据量很大,或者需要定期重复合并操作,用脚本更高效:

  1. 打开你的谷歌表格,点击顶部菜单栏「扩展」→「Apps Script」
  2. 删除默认的myFunction()代码,替换成下面的脚本:
function mergeSheets() {
  // 获取当前表格实例
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  // 定义要合并的产品Sheet名称(可根据实际修改)
  const sheetNames = ["产品1", "产品2", "产品3", "产品4"];
  // 目标Sheet,不存在则自动创建
  let targetSheet = ss.getSheetByName("合并数据");
  if (!targetSheet) {
    targetSheet = ss.insertSheet("合并数据");
  }
  
  // 清空目标Sheet旧数据(若想保留历史数据可注释这两行)
  targetSheet.clearContents();
  let rowIndex = 1;
  
  // 遍历每个产品Sheet合并数据
  sheetNames.forEach((name) => {
    const sheet = ss.getSheetByName(name);
    if (!sheet) return;
    
    // 第一个Sheet保留表头,后续Sheet只取数据行
    const range = rowIndex === 1 ? sheet.getDataRange() : sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn());
    const values = range.getValues();
    
    // 将数据写入目标Sheet
    targetSheet.getRange(rowIndex, 1, values.length, values[0].length).setValues(values);
    rowIndex += values.length;
  });
  
  SpreadsheetApp.getUi().alert("数据合并完成!");
}
  1. 点击脚本编辑器的「保存」按钮,给脚本命名(比如MergeProductSheets
  2. 点击「运行」,第一次运行会要求授权,按照提示完成即可
  • 脚本特性:自动处理表头重复问题,清空旧数据避免重复,完成后弹出提示

你可以根据参考效果调整公式或脚本里的Sheet名称、数据范围,确保合并后的格式符合预期。

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

火山引擎 最新活动