如何在Google Sheets中合并列数不同、存在重复列的多张表格?
解决方法
方法1:内置函数动态合并(无需脚本)
不需要手动为每个表补空列对齐,只用一个公式就能自动完成多表列对齐+合并,支持任意数量的表格:
首先生成全量总表头,公式:
=UNIQUE(TOROW({表1!1:1,表2!1:1,表3!1:1},1))
公式会自动提取所有表的表头,去重后生成合并后的全量表头,新增表格只需要在大括号里追加对应表的首行范围即可。自动对齐所有表的数据并合并,公式:
=LET( // 第一步生成的总表头范围,可直接替换成上面的UNIQUE公式 full_header, A1:E1, // 所有要合并的表的完整范围,新增表直接追加到大括号内即可 table_list, {表1!A:D,表2!F:H,表3!J:L}, // 逐表处理:匹配总表头,缺失列自动补空 processed, REDUCE("", SEQUENCE(COUNTA(table_list)/COLUMNS(table_list)), LAMBDA(acc,idx, LET( current_table, INDEX(table_list,idx), current_header, INDEX(current_table,1), current_data, OFFSET(current_table,1,0,ROWS(current_table)-1), aligned, BYCOL(full_header, LAMBDA(h,XLOOKUP(h,current_header,current_data,""))), IF(acc="", aligned, VSTACK(acc,aligned)) ) )), // 拼接表头+过滤全空行输出结果 final_res, VSTACK(full_header, FILTER(processed, BYROW(processed, LAMBDA(r,COUNTA(r)>0)))), final_res )
方法2:自定义函数批量处理
如果需要频繁合并多表,可以自定义复用函数,操作步骤:
- 点击Google Sheets顶部菜单栏「扩展功能」->「Apps脚本」
- 粘贴以下代码保存后,回到表格就能直接使用
=MERGE_TABLES(表1范围, 表2范围, 表3范围...)
function MERGE_TABLES(...tables) { // 提取所有表头去重 const headers = [...new Set(tables.flatMap(t => t[0].filter(h => h)))]; const result = [headers]; // 逐表处理对齐 tables.forEach(table => { const tHeader = table[0]; const colMap = headers.map(h => tHeader.indexOf(h)); // 逐行匹配 for (let i = 1; i < table.length; i++) { if (table[i].every(v => !v)) continue; const row = colMap.map(idx => idx >= 0 ? table[i][idx] : ""); result.push(row); } }) return result; }
注意事项
- 所有待合并表的第一行必须为表头,表头名称完全一致才会被合并到同一列
- 表头大小写敏感,注意保持不同表中相同含义的列名称完全相同
- 新增待合并表只需要在公式参数里追加对应范围即可,不需要手动调整列对齐逻辑
内容的提问来源于stack exchange,提问作者weizer
相关产品推荐
相关产品推荐

