Google Sheets转置列并删除重复ID行的方法咨询
解决方案:Google Sheets 10000+行数据转置表头并匹配填充
无需编码实现(内置功能)
方法1:数据透视表(推荐,操作简单)
- 选中包含表头的全部数据区域
- 点击菜单栏「数据」→「数据透视表」,选择结果放置位置(新工作表或现有工作表)
- 在右侧透视表编辑器中配置:
- 行:添加
Patient.Data.ID字段,自动合并重复ID行 - 列:添加
Report.Textblock.Text字段,将所有唯一文本转为表头 - 值:添加任意字段(如
Patient.Data.ID),修改汇总方式为「自定义公式」,输入=1,可将值字段名称清空
- 行:添加
- 生成后,匹配的单元格会显示1,未匹配的为空白;若需要统一格式,可通过「格式」→「条件格式」将空白单元格设为0
方法2:公式组合(半无编码)
如果透视表不符合需求,用公式快速生成:
- 获取唯一ID列表:在空白列(如D列)输入
=UNIQUE(A:A)(A列为Patient.Data.ID) - 生成文本表头:在D列上方的行(如E1开始)输入
=TRANSPOSE(UNIQUE(C:C))(C列为Report.Textblock.Text) - 填充匹配值:在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
相关产品推荐
相关产品推荐

