多条件矩阵查找求助:按客户与工作日匹配配送编号
解决跨工作表按客户+工作日匹配配送编号的问题
无需调整表格结构的公式方案
因为第一个工作表的工作日是列标题,需同时匹配行(客户)和列(工作日)的位置,用INDEX+MATCH组合可直接实现:
假设第一个表名为客户配送表,结构为:A列是客户姓名,B~F列的列标题是工作日(如周一、周二),对应单元格为配送编号;第二个工作表中,当前客户在A2,选定的工作日在B1(黄色单元格),需在B2(红色单元格)填入公式:
=INDEX(客户配送表!$B:$F, MATCH($A2, 客户配送表!$A:$A, 0), MATCH($B$1, 客户配送表!$B$1:$F$1, 0))
- 第一个
MATCH定位客户在客户配送表中的行号 - 第二个
MATCH定位选定工作日在客户配送表中的列号 INDEX根据行号和列号提取对应的配送编号
如果使用Google Sheets,也可以用更简洁的XLOOKUP嵌套:
=XLOOKUP($A2, 客户配送表!$A:$A, XLOOKUP($B$1, 客户配送表!$B$1:$F$1, 客户配送表!$B:$F))
调整表格结构的方案
把第一个工作表的“宽格式”转成“长格式”(三列:客户姓名、工作日、配送编号),后续匹配会更简单:
- Excel操作:选中数据区域 → 插入数据透视表 → 在数据透视表字段列表中,将“客户姓名”拖到行,所有工作日列拖到值 → 右键点击值区域任意单元格 → 选择“值设置”改为“求和”(因每个单元格数据唯一,任意聚合方式均可)→ 选中数据透视表 → 点击“分析”选项卡 → “更改数据源”→ “逆透视列”
- Google Sheets操作:选中数据区域 → 点击“数据”→ “转置重塑”→ “逆透视列”→ 选择所有工作日列完成逆透视
转成长格式后,用多条件INDEX+MATCH即可匹配:
=INDEX(重塑后表!$C:$C, MATCH(1, ($A2=重塑后表!$A:$A)*($B$1=重塑后表!$B:$B), 0))
内容的提问来源于stack exchange,提问作者Spkf
相关产品推荐
相关产品推荐

