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

如何在Google Sheets中将重复行的有效数据合并至首行?

在Google Sheets中将重复行的非重复数据合并为单行

我有一个表格,多数列存在重复数据,但并非所有列都是如此,想把所有有效数据移至首行。以下是示例数据:

学生ID年级姓氏名字课时课程教师
1234569SmithJohn1SpanishSanchez, L.
1234569SmithJohn2EnglishKing, A.
1234569SmithJohn3PEWashington, M.
1234569SmithJohn4MathDaniel, C.

期望的最终效果:

学生ID年级姓氏名字课时课程教师课时课程教师课时课程教师课时课程教师
1234569SmithJohn1SpanishSanchez, L.2EnglishKing, A.3PEWashington, M.4MathDaniel, C.

之前尝试清理数据删除最后三行,只保留了首行,达不到预期效果,需要Google Sheets的解决方案。


解决方案

方法1:单学生场景快速处理

假设原数据位于A1:G5(A1为表头,A2:G5为数据行):

  • 生成合并表头:在空白区域(如A10)输入公式,重复「课时、课程、教师」表头:
    ={A1:D1, E1:G1, E1:G1, E1:G1, E1:G1}
    
    重复次数 = 该学生的总行数 - 1,此例中为3次。
  • 生成合并数据行:在A11单元格输入公式,将课程数据横向追加到基础信息后:
    ={A2:D2, FLATTEN(E2:G5)}
    

方法2:多学生批量处理

如果表格包含多个学生数据,可批量生成结果:

  1. 提取唯一学生基础信息:在A10单元格输入公式,自动列出所有不重复的学生信息:
    =UNIQUE(A2:D5)
    
  2. 批量展开课程数据:在E10单元格输入数组公式,自动匹配每个学生的所有课程数据并横向展开:
    =ARRAYFORMULA(IFERROR(FLATTEN(VLOOKUP(A10:A, {A2:A, E2:G}, {2,3,4}, FALSE))))
    
  3. 补充表头:根据每个学生的课程数量,重复「课时、课程、教师」表头即可。

方法3:自动化脚本(适用于大数据量)

若数据量较大,可通过Apps Script自动处理:

  1. 打开Google Sheets,点击「扩展程序」→「Apps 脚本」。
  2. 删除默认代码,粘贴以下脚本:
    function mergeRows() {
      const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
      const data = sheet.getDataRange().getValues();
      const header = data[0];
      const merged = {};
      
      // 按学生ID分组,合并课程数据
      for (let i = 1; i < data.length; i++) {
        const id = data[i][0];
        if (!merged[id]) {
          merged[id] = data[i].slice(0,4); // 保留前4列基础信息
        }
        merged[id] = merged[id].concat(data[i].slice(4)); // 追加后3列课程数据
      }
      
      // 生成新表头:基础表头 + 重复的课程表头
      const maxCourses = Math.max(...Object.values(merged).map(row => (row.length-4)/3));
      const newHeader = header.slice(0,4).concat(...Array(maxCourses).fill(header.slice(4)));
      
      // 将结果写入新工作表
      const newSheet = SpreadsheetApp.getActiveSpreadsheet().insertSheet();
      newSheet.appendRow(newHeader);
      Object.values(merged).forEach(row => newSheet.appendRow(row));
    }
    
  3. 点击运行,授权后即可自动生成合并后的表格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 21:23:19