如何在Google Sheets中用非唯一列创建多对多关联新表
Google Sheets 非唯一列合并(笛卡尔积连接)
针对你需要将县份表与门店表通过重复的County列做全匹配合并的需求,直接用以下公式就能实现预期效果:
假设:
- 县份表在
Sheet1,A列是「记录编号」,B列是「县份」(数据从A2开始) - 门店表在
Sheet2,A列是「县份」,B列是「名称」(数据从A2开始)
在新工作表的A1单元格输入公式:
=LET( county_data, Sheet1!A2:B, store_data, Sheet2!A2:B, expanded, BYROW(county_data, LAMBDA(row, LET( record_num, INDEX(row,1), county, INDEX(row,2), matches, FILTER(store_data, INDEX(store_data,,1)=county), IF(ROWS(matches)=0, {record_num, county, ""}, HSTACK( SEQUENCE(ROWS(matches),1,record_num,0), SEQUENCE(ROWS(matches),1,county,0), INDEX(matches,,2) ) ) ) )), VSTACK({"记录编号","县份","名称"}, FLATTEN(expanded)) )
公式说明:
LET:定义变量简化公式,避免重复引用BYROW:遍历县份表的每一行数据FILTER:根据当前行的县份,筛选出门店表中所有匹配的门店记录- 若某县没有对应门店,自动生成空的「名称」字段
HSTACK+SEQUENCE:把当前记录编号、县份和匹配到的门店名称横向拼接,生成多行结果VSTACK:添加表头并整合所有结果
注意事项:
- 如果你的工作表名称不是
Sheet1/Sheet2,要对应修改公式里的表名 - 确保数据区域没有多余的空行,否则会生成无效的空记录
- 公式会自动动态更新,只要原表数据变化,合并结果会同步更新
内容的提问来源于stack exchange,提问作者leol




