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

Google Sheets转置列并删除重复ID行的方法咨询

解决方案:Google Sheets 10000+行数据转置表头并匹配填充

无需编码实现(内置功能)

方法1:数据透视表(推荐,操作简单)

  • 选中包含表头的全部数据区域
  • 点击菜单栏「数据」→「数据透视表」,选择结果放置位置(新工作表或现有工作表)
  • 在右侧透视表编辑器中配置:
    • 行:添加Patient.Data.ID字段,自动合并重复ID行
    • 列:添加Report.Textblock.Text字段,将所有唯一文本转为表头
    • 值:添加任意字段(如Patient.Data.ID),修改汇总方式为「自定义公式」,输入=1,可将值字段名称清空
  • 生成后,匹配的单元格会显示1,未匹配的为空白;若需要统一格式,可通过「格式」→「条件格式」将空白单元格设为0

方法2:公式组合(半无编码)

如果透视表不符合需求,用公式快速生成:

  1. 获取唯一ID列表:在空白列(如D列)输入=UNIQUE(A:A)(A列为Patient.Data.ID)
  2. 生成文本表头:在D列上方的行(如E1开始)输入=TRANSPOSE(UNIQUE(C:C))(C列为Report.Textblock.Text)
  3. 填充匹配值:在D2对应的E2单元格输入=ARRAYFORMULA(IF(COUNTIFS(A:A, D2, C:C, E$1)>0, 1, "")),下拉+右拉覆盖所有区域即可

代码实现方案(适合大数量级数据)

当数据超过10000行时,内置公式可能出现卡顿,用Google Apps Script更高效:

function pivotPatientReportData() {
  const activeSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const allData = activeSheet.getDataRange().getValues();
  const headerRow = allData[0];
  
  // 定位目标列索引
  const idColumnIndex = headerRow.indexOf('Patient.Data.ID');
  const reportColumnIndex = headerRow.indexOf('Report.Textblock.Text');
  
  // 收集唯一ID和报告文本
  const uniqueIds = new Set();
  const uniqueReports = new Set();
  allData.slice(1).forEach(row => {
    uniqueIds.add(row[idColumnIndex]);
    uniqueReports.add(row[reportColumnIndex]);
  });
  
  const idList = Array.from(uniqueIds);
  const reportList = Array.from(uniqueReports);
  
  // 构建结果数据集
  const resultHeaders = ['Patient.Data.ID', ...reportList];
  const resultRows = [resultHeaders];
  
  idList.forEach(id => {
    const currentRow = [id];
    // 获取当前ID对应的所有报告文本
    const patientReports = allData.filter(row => row[idColumnIndex] === id).map(row => row[reportColumnIndex]);
    // 匹配填充1或空
    reportList.forEach(report => {
      currentRow.push(patientReports.includes(report) ? 1 : '');
    });
    resultRows.push(currentRow);
  });
  
  // 创建新工作表存放结果
  const resultSheet = SpreadsheetApp.getActiveSpreadsheet().insertSheet('Pivoted_Report_Result');
  resultSheet.getRange(1, 1, resultRows.length, resultRows[0].length).setValues(resultRows);
}

使用步骤:

  • 打开目标表格,点击「扩展程序」→「Apps Script」
  • 粘贴代码,保存项目名称
  • 点击运行按钮,完成授权后,会自动生成名为Pivoted_Report_Result的结果表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 12:40:22