Menu

Excel HLOOKUP 函数:按行横向查找(附示例)

=HLOOKUP("Mar",A1:E3,2,FALSE) 在 A1:E3 的第一行中查找 Mar,并返回同一列第二行的值。本文讲解精确匹配和近似匹配,以及什么时候用 XLOOKUP 更好。

本页的每张表格都是实时的:修改数字或公式,就会重新计算。

=HLOOKUP("Mar",A1:E3,2,FALSE) 在 A1:E3 的第一行中查找 Mar,并返回同一列第二行的值。它就是把 VLOOKUP 横过来用,适合标签横排在表格顶部的表格。

某个月的销售额
B6
ABCDE
1MonthJanFebMarApr
2Sales4,2003,9004,8005,100
3Costs2,6002,5002,9003,000
4
5MonthMar
6Sales4,800
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

B6 在第 1 行中查找 Mar,在 D 列找到它,并返回该列第 2 行的值:4,800。在 B5 中选择 Apr 会得到 5,100;把公式中的 2 改成 3 则会得到成本。

HLOOKUP 语法

=HLOOKUP(lookup_value, table_array, row_index_num, [range_lookup])
  • lookup_value:要在表格第一行中查找的值。
  • table_array:表格。HLOOKUP 只在它的最上面一行中查找。
  • row_index_num:要返回第几行,最上面一行算作 1。数字超过表格的行数会得到 #REF!;0 会得到 #VALUE!。
  • range_lookup:FALSE 表示精确匹配。TRUE 或省略表示在已排序的行中近似匹配。

匹配时不区分大小写(mar 也能找到 Mar),使用 FALSE 时查找值可以带通配符 * 和 ?。不在第一行中的值会返回 #N/A。

按行近似匹配

使用 TRUE 时,HLOOKUP 会找到小于或等于查找值的最大标题。第一行必须从左到右按升序排列。

按重量计算运费
B5
ABCDE
1Weight from (kg)02510
2Cost$4.50$6.00$9.50$14.00
3
4Parcel (kg)7
5Cost$9.50
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

7 kg 不是任何一个标题。不超过它的最大标题是 5,所以 B5 返回 9.50。把B4改成1.5会得到9.50。把 B4 改成 1.5 会得到 4.50,改成 12 会得到 $14.00。公式中的表格是 B1:E2 而不是 A1:E2:它从第一个重量开始,这样 A1 中的文本标签就不属于已排序的那一行。

用 XLOOKUP 按行查找

在 Excel 2021 和 Microsoft 365 中,XLOOKUP 取代了 HLOOKUP。它把要查找的行和要返回的行作为两个区域分别传入,所以不用去数行号;返回区域有好几行高时,还能把整列一起带回来。

用 XLOOKUP 完成同样的查找
B7
ABCDE
1MonthJanFebMarApr
2Sales4,2003,9004,8005,100
3Costs2,6002,5002,9003,000
4Profit1,6001,4001,9002,100
5
6MonthFeb
7Figures3,900
82,500
91,400
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

B7 中的一个公式把 Feb 的三个数字沿 B7:B9 向下溢出:3,900、2,500 和 1,400。如果 B8 或 B9 中有内容,B7 就会显示 #SPILL!。XLOOKUP 的其他选项,比如找不到时的提示信息和查找最后一个匹配项,见 XLOOKUP 一文。

换个思路,把表格转过来:TRANSPOSE

有时更好的办法是做一份竖向的表格副本。=TRANSPOSE(A1:D3) 返回同样的单元格,只是行和列互换了,而且它和原表格保持关联。之后 VLOOKUP、FILTER 和图表都能照常使用它。

横向表格的竖向副本
A5
ABCD
1MonthJanFebMar
2Sales4,2003,9004,800
3Costs2,6002,5002,900
4
5MonthSalesCosts
6Jan4,2002,600
7Feb3,9002,500
8Mar4,8002,900
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

A5 溢出一个 4 行 3 列的区域:月份排在左侧,Sales 和 Costs 排在顶部。把 C2 中 Feb 的销售额改成 4100,副本会跟着变。如果只想不用公式复制一次,选中表格并复制,然后使用“开始 > 粘贴 > 选择性粘贴”,勾选“转置”。

练习:某个月的成本

每月数据
B6
ABCDE
1MonthJanFebMarApr
2Sales4,2003,9004,8005,100
3Costs2,6002,5002,9003,000
4
5MonthApr
6Costs
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

轮到你了: 在 B6 中用 HLOOKUP 返回 B5 中月份的成本。

常见问题

VLOOKUP 和 HLOOKUP 有什么区别?

VLOOKUP 沿表格的第一列向下查找,返回右侧某一列中的值。HLOOKUP 沿第一行横向查找,返回下方某一行中的值。两者的参数相同,只是用行号代替了列号。

HLOOKUP 中的行号是什么?

要返回的那一行的序号,从表格的第一行算起,第一行为 1。在 =HLOOKUP("Mar",A1:E3,3,FALSE) 中,3 表示 A1:E3 的第三行。行号超过表格的行数会返回 #REF!。

XLOOKUP 能代替 HLOOKUP 吗?

能。XLOOKUP 两个方向都能查找:=XLOOKUP("Mar",B1:E1,B2:E2) 在一行中查找,并从另一行返回结果。它需要 Excel 2021 或 Microsoft 365。

HLOOKUP 为什么返回 #N/A?

查找值不在表格的第一行中:可能是拼写错误、多了空格、数字以文本形式存储,或者这个值在另一行里。最后一个参数为 TRUE 时,比第一个标题还小的值也会返回 #N/A。

Coddy 编程语言插图

和 Coddy 一起学编程

开始