如何在Google Sheets中匹配不同工作表的同类型共同列并对比数据?
一、提取所有工作表的共同列名
在空白单元格(比如新工作表的A1)输入公式,提取所有目标工作表的表头列名并去重:
=UNIQUE(FLATTEN(Sheet1!1:1, Sheet2!1:1, Sheet3!1:1))
注:把Sheet1/Sheet2/Sheet3替换成你实际的工作表名称,若有更多表可继续追加筛选出在所有目标工作表中都存在的列名,在空白单元格(比如B1)输入:
=FILTER(A:A, COUNTIF(Sheet1!1:1, A:A)=1, COUNTIF(Sheet2!1:1, A:A)=1, COUNTIF(Sheet3!1:1, A:A)=1)
该公式会自动保留同时出现在所有指定工作表中的列名。
二、校验共同列的类型是否一致
针对筛选出的共同列名,批量校验对应列的数据类型是否匹配,在空白单元格(比如C1)输入数组公式:=ARRAYFORMULA(IF(B:B="", "", IFERROR(IF(VLOOKUP(B:B, {Sheet1!1:1, TYPE(Sheet1!2:2)}, 2, 0)=VLOOKUP(B:B, {Sheet2!1:1, TYPE(Sheet2!2:2)}, 2, 0), "类型匹配", "类型不匹配"), "某工作表无此列")))
说明:TYPE()函数返回对应单元格的数据类型代码(如1=数字,2=文本,4=布尔值等),通过比对不同工作表对应列的类型代码,快速判断类型是否一致
三、适配列未排序、长度不等的场景
上述公式无需依赖列的排序位置,也不受各工作表数据行数差异影响,会自动匹配列名对应的列进行处理,避免了VLOOKUP或QUERY逐个配置的繁琐。
内容的提问来源于stack exchange,提问作者Saswata Kar

