做excel行列交叉查询,用 index+match+match 组合就够了:第一个 match 找行号,第二个 match 找列号,最后用 index 取出行列交叉位置的数值。操作环境是microsoft excel,这套写法不用依赖新函数,不管是产品、月份、区域还是人员类的二维表,都能用。
下面的示例是「产品×区域」的销售额矩阵,你只要在右侧输入要查的产品和区域,结果单元格就能自动跳出对应金额。操作前先确认行标题、列标题里没有多余空格,输入的查询值要和标题文字完全一致。
第一步:整理成标准交叉表
把行标题放在最左侧第一列,列标题放在数据区域的最上方,中间交叉的区域只放你要提取的数值就行。示例中 A3:A7 是产品名称,B2:E2 是区域名称,B3:E7 是要返回的销售额,这种布局能让公式分别精准定位行、列的位置。

第二步:设置查询输入区
在表格旁边空出 3 个单元格,分别放「要查产品」「要查区域」「查询结果」。示例把产品输入框放在 G3,区域输入框放在 H3,结果放在 I3,之后只要改 G3 和 H3 的内容,I3 的结果会自动更新。

第三步:输入 INDEX 和两个 MATCH
在 I3 输入公式 =INDEX($B$3:$E$7,MATCH($G$3,$A$3:$A$7,0),MATCH($H$3,$B$2:$E$2,0))。第一个 MATCH 根据 G3 的内容找产品所在行,第二个 MATCH 根据 H3 的内容找区域所在列,INDEX 再从 B3:E7 里取出交叉点。示例查询「显示器 + 华南」,返回 12800。

第四步:给找不到的情况加处理
如果产品名或区域名输错,原公式通常会返回 #N/A。可以在外层套 IFERROR,例如 =IFERROR(INDEX($B$3:$E$7,MATCH($G$3,$A$3:$A$7,0),MATCH($H$3,$B$2:$E$2,0)),""),找不到时显示空白;也可以把最后的空字符串改成「未找到」。

公式语法怎么拆
INDEX 的语法是 INDEX(array,row_num,[column_num])。array 是返回值所在区域,row_num 是要返回第几行,column_num 是要返回第几列。交叉查询里,row_num 和 column_num 通常不手写数字,而是交给 MATCH 算出来。
MATCH 的语法是 MATCH(lookup_value,lookup_array,[match_type])。交叉查询一般把 match_type 写成 0,表示精确匹配;如果不写或者写成 1,标题没有按要求排序时容易查错。
| 参数 | 在本例中的写法 | 作用 |
|---|---|---|
array |
$B$3:$E$7 |
实际返回销售额的数值区域 |
row_num |
MATCH($G$3,$A$3:$A$7,0) |
按产品名找到第几行 |
column_num |
MATCH($H$3,$B$2:$E$2,0) |
按区域名找到第几列 |
lookup_value |
$G$3、$H$3
|
查询区里输入的产品和区域 |
lookup_array |
$A$3:$A$7、$B$2:$E$2
|
分别对应行标题和列标题 |
match_type |
0 |
精确匹配,适合文本标题 |
容易出错的地方
公式返回 #N/A,通常是查询值在行标题或列标题里找不到。先检查 G3、H3 的文字是不是和标题完全一致,尤其是全角空格、前后空格、错别字和同名不同写法。
公式返回 #REF!,多半是 INDEX 的返回区域和两个 MATCH 的标题区域尺寸对不上。返回区域 B3:E7 有 5 行 4 列,行标题也要对应 A3:A7,列标题也要对应 B2:E2。
公式复制到其他位置后查错,通常是引用没有锁定。示例里的 $B$3:$E$7、$A$3:$A$7、$B$2:$E$2 用了绝对引用,复制公式时区域不会跑偏。
扩展示例:用 XLOOKUP 写交叉查询
如果当前 Excel 支持 XLOOKUP,也可以写成 =XLOOKUP($G$3,$A$3:$A$7,XLOOKUP($H$3,$B$2:$E$2,$B$3:$E$7))。内层 XLOOKUP 先按区域取出一整列,外层 XLOOKUP 再按产品取这一列里的值。
XLOOKUP 的常用语法是 XLOOKUP(lookup_value,lookup_array,return_array,[if_not_found],[match_mode],[search_mode])。这里主要用前三个参数:查找值、查找区域、返回区域;如果使用 WPS 或旧版 Excel,需要先确认是否支持该函数。
交叉查询最稳的校验方法是先手动找一组已知交叉点,比如「显示器 + 华南」应是 12800,再看公式返回值是否一致。确认一组没问题后,再把产品和区域改成下拉输入,日常查询会更少输错。











