Table of contents
你可能知道,Microsoft Excel有三个查询数值的函数--LOOKUP、VLOOKUP和HLOOKUP--它们似乎最让用户困惑。 在本教程中,我们将重点介绍Excel HLOOKUP函数的特殊性,并讨论几个公式实例,帮助你在Excel中最有效地使用它。
什么是Excel中的HLOOKUP?
Excel HLOOKUP函数是为以下目的而设计的 横向查询 更具体地说,它在表的第一行搜索某个值,并从你指定的行中返回同一列的另一个值。
HLOOKUP函数在所有版本的Microsoft Excel 2016、Excel 2013、Excel 2010、Excel 2007及以下版本中都可用。
Excel HLOOKUP的语法和用途
Excel中的HLOOKUP函数有以下参数。
HLOOKUP(lookup_value, table_array, row_index_num, [range_lookup])- 查询_价值 (必填) - 要搜索的值,可以是一个单元格引用,数字值或文本字符串。
- 表_数组 (required) - 两行或多行数据,在其中搜索查找值。 它可以是一个常规范围,命名范围或表。 查找值应始终位于 第一行 的 表_数组 .
- 行_index_num (required) - table_array中的行号,应该从该行返回数值。 例如,要从第2行返回匹配的数值,设置row_index_num为2,以此类推。
- 范围_查询 (可选) - 一个逻辑(布尔)值,指示HLOOKUP以精确或近似的方式搜索。
如果为 "true "或省略,一个 近似的 这意味着如果没有找到精确的匹配,你的Hlookup公式将进行非精确的匹配,并返回小于lookup_value的下一个最大值。
如果是FALSE,只有一个 完全匹配 如果在指定的行中没有值与查询值完全匹配,HLOOKUP会抛出#N/A错误。
为了使事情更容易理解,你可以翻译一下Excel的HLOOKUP语法。
HLOOKUP( 查找_值 , table_array , row_index_num , [range_lookup])变成正常的英语。
HLOOKUP( 搜索这个值 ,在这个表中,返回这个行的一个值,[返回一个近似或精确的匹配])为了了解它在实践中是如何工作的,让我们做一个简单的Hlookup例子。 假设你有一个表格,里面有关于太阳系行星的一些基本信息(请看下面的截图)。 你想要的是一个公式,返回名字被输入到B5单元格的行星的直径。
在我们的Hlookup公式中,我们将使用以下参数。
- 查询_价值 是B5--包含你想找到的星球名称的单元格。
- 表_数组 是B2:I3--公式将查询数值的表格。
- 行_index_num 是2,因为直径是表中的第二行。
- 范围_查询 因为我们表的第一行不是从A到Z排序的,所以我们只能用精确匹配的方式进行查询,这在本例中是可行的。
现在你把这些论据放在一起,得到以下公式。
=vlookup(40, a2:b15,2)
关于Excel HLOOKUP函数,你应该知道的3件事
每当你在Excel中进行水平查询时,请记住以下事实。
- HLOOKUP函数只能在 最上面一行 的 table_array 如果你需要查询其他地方,考虑使用索引/匹配公式。
- Excel中的HLOOKUP是 不区分大小写 ,它不区分大写字母和小写字母。
- 如果 范围查询 被设置为 "true "或省略( 近似的 匹配),在第一行的值是 表_数组 必须在以下方面进行排序 升序 (A-Z)从左到右。
Excel中的VLOOKUP和HLOOKUP有什么区别?
正如你已经知道的,VLOOKUP和HLOOKUP这两个函数都是在搜索一个查询值。 区别在于如何进行搜索。 你可能已经注意到,这两个函数的名称只有第一个字母不同--"H "代表水平,"V "代表垂直。
因此,你使用VLOOKUP函数来搜索是 纵向 当你的查询值位于你想找的数据左边的一列时,列表。
HLOOKUP函数执行一个 横向查询 - 它在表的最上面一行搜索一个查找值,并返回一个位于同一列下的指定行数的值。
下面的图片展示了Excel中Vlookup和Hlookup公式的区别。
如何在Excel中使用HLOOKUP--公式示例
现在,HLOOKUP函数对你来说已经开始有点熟悉了,让我们再讨论几个公式例子来巩固知识。
具有近似和精确匹配的水平查询
正如你已经知道的,Excel中的HLOOKUP函数可以执行精确和非精确匹配的查询,这取决于提供给 范围查询 争论。
- TRUE或省略 - 近似的 匹配
- 假的 - 确实 匹配
请记住,虽然我们说的是 "近似匹配",但任何Hlookup公式都会首先搜索一个精确的匹配。 但如果没有找到精确的匹配,将最后一个参数设置为FALSE允许公式返回一个近似匹配(小于查找值的最近值);TRUE或省略在这种情况下返回#N/A错误。
为了更好地说明这一点,请考虑以下HLOOKUP例子。
HLOOKUP与近似匹配
假设你在第2行有一个行星列表(B2:I2),在第1行有它们的温度(B1:I1)。 你想找出哪颗行星有某个温度,输入到B4单元格。
你不能指望你的用户确切地知道查询温度,因此,返回一个 最近的匹配 如果没有找到准确的值,则为"-"。
例如,要找出平均温度在-340°F左右的星球,使用以下公式( 范围查询 设置为 "真 "或像本例那样省略)。
=hlookup(b4, b1:i2, 2)
请记住,近似匹配需要将顶行的值从最小到最大或从A到Z进行排序,否则你的Hlookup公式可能会返回一个错误的结果。
正如你在下面的截图中所看到的,我们的公式返回了 天王星 是太阳系中最冷的行星之一,平均保持在华氏346度。
完全匹配的HLOOKUP
如果你确切地知道查询值,你可以将HLOOKUP的最后一个参数设置为FALSE。
=hlookup(b4, b1:i2, 2, false)
一方面,近似匹配的Hlookup更方便用户使用,因为它不需要对第一行的数据进行排序。 另一方面,如果没有找到精确匹配,将返回#N/A错误。
提示:不要用不适用的错误来吓唬你的用户,你可以在IFERROR中嵌入你的Hlookup公式并显示你自己的信息,例如。
=IFERROR(HLOOKUP(B4, B1:I2, 2, FALSE), "对不起,没有找到任何东西" )
如何从另一个工作表或工作簿进行HLOOKUP操作
一般来说,从另一个工作表或不同的工作簿中进行h-lookup,无非是为你的HLOOKUP公式提供外部参考。
要从一个 不同的工作表 例如,你要指定工作表的名称,后面加一个感叹号。
=HLOOKUP(B$1, Diameters! $B$1:$I$2,2,FALSE)
如果工作表名称包含 空间 或 非字母字符 ,用单引号括住该名称,像这样。
=HLOOKUP(B$1, '行星直径'!$B$1:$I$2,2,FALSE)
引用时 另一本工作手册 ,包括方括号内的工作簿名称。
=HLOOKUP(B$1, [Book1.xlsx]Diameters!$B$1:$I$2, 2, FALSE)
如果你要从一个封闭的工作簿中提取数据,应该指定整个路径。
=HLOOKUP(B$1, 'D:\Reports\[Book1.xlsx]Diameters'!$B$1:$I$2, 2, FALSE)
提示:与其在公式中手动输入工作簿和工作表的名称,你可以选择另一个工作表中的单元格,Excel将自动为你的公式添加外部参考。
Excel HLOOKUP的部分匹配(通配符)。
与VLOOKUP的情况一样,Excel的HLOOKUP函数允许在以下通配符中使用 查找_值 争论。
- 问号 (?)来匹配任何单个字符
- 星号 (*)来匹配任何序列的字符
当你想根据查询单元格内容中的某些文本从数据库中提取信息时,通配符就会派上用场。
例如,你在第1行有一个客户名称的列表,在第2行有一个订单ID。你想找到一个特定客户的订单ID,但你不能准确地记住客户名称,尽管你记得它以 "ace "开头。
假设你的数据在单元格B1:I2中( table_array) 而订单号则在第2行( 行_index_num ),该公式如下。
=HLOOKUP("ace*", B1:I2, 2, FALSE)
为了使公式更加灵活,你可以在一个特殊的单元格中输入查找值,例如B4,然后将该单元格与通配符连接起来,像这样。
=HLOOKUP(B4& "*", B1:I2, 2, FALSE)
注意事项。
- 要使通配符HLOOKUP公式正确工作,需要 范围查询 参数需要被设置为FALSE。
- 如果 表_数组 包含一个以上符合通配符条件的值,则返回第一个发现的值。
HLOOKUP公式中的绝对和相对单元格引用
如果你在为一个单元格写公式,你可以不用担心相对和绝对单元格引用的正确使用,任何一种都可以。
将一个公式复制到多个单元格则是另一回事。 从本质上讲。
- 你应该总是修复 table_array 通过使用带有美元符号($)的绝对单元格引用,如$B$1:$I$2。
- 通常情况下, 查找_值 引用是相对的还是混合的,取决于你的业务逻辑。
为了使事情更清楚,让我们仔细看看从另一个工作表提取数据的公式。
=HLOOKUP(B$1, Diameters! $B$1:$I$2,2,FALSE)
在上述公式中,我们使用 绝对的 单元格引用($B$1:$I$2)在 表_数组 因为当公式被复制到其他单元格时,它应该保持不变。
对于 查找_值 (B$1),我们用a 混合的 因为我们的查询值(星球名称)在同一行(第1行),但在不同的列(从B到I),列的引用应该根据复制公式的单元格的相对位置来改变。
由于巧妙地使用了单元格引用,我们的Hlookup公式对多个单元格都能完美工作。
INDEX/MATCH - 一个更强大的Excel HLOOKUP的替代品
正如你已经知道的那样,Excel中的HLOOKUP函数有很多限制,最重要的是它不能在除最上面一行之外的任何地方进行查询,而且在用近似匹配搜索时必须对数值进行排序。
幸运的是,在Excel中存在一个比Vlookup和Hlookup更强大和通用的替代方法--INDEX和MATCH函数的联系,它可以归结为这个通用公式。
INDEX ( 从哪里返回一个值 , MATCH ( 查询值 , 在哪里搜索 , 0))假设你的查找值在B7单元格,你正在寻找第2行(B2:I2)的匹配值,并想从第1行(B1:I1)返回一个值,公式如下。
=index(b1:i1,match(b7,b2:i2,0))
在下面的截图中,你可以看到2个Hlookup公式在第一行和第二行中搜索,在这两种情况下,INDEX MATCH的效果同样好。
关于公式逻辑的详细解释和更多的例子,请看INDEX MATCH作为VLOOKUP的一个更好的替代品。
如何在Excel中做区分大小写的h-lookup
正如本教程一开始提到的,Excel HLOOKUP函数是不分大小写的。 在字符大小写重要的情况下,你可以采取EXACT函数,精确比较单元格,并把它放在前面例子中讨论的INDEX MATCH公式中。
INDEX ( 行来返回一个值,从 , match(true, exact( 搜索的行 , 查询值) , 0))假设你的查找值在B4单元格,查找范围是B1:I1,返回范围是B2:I2,那么公式的形状如下。
=index(b2:i2, match(true, exact(b1:i1,b4),0))
重要提示! 这是一个数组公式,因此你应该按Ctrl + Shift + Enter来完成它。
上面的例子演示了我最喜欢的但不是唯一可能的在Excel中做区分大小写的Hlookup的方法。 如果你想知道其他的技术,请查看这个教程:在Excel中做区分大小写的Vlookup的4种方法。 我想你在重建Vlookup公式进行横向查找时不会有任何问题。
Excel HLOOKUP不工作的十大原因
现在你已经知道,Hlookup是Excel中一个非常有用和强大的查找函数。 它也是一个棘手的函数,由于它有许多特殊性,#N/A、#VALUE或#REF错误是常见的。 如果你的HLOOKUP公式不能正常工作,很可能是因为以下原因之一。
1.Excel中的HLOOKUP不能查看自己的上方
即使你忘记了关于Excel中水平查找的所有其他细节,请记住这个重要的细节--Hlookup只能在 最上面一行 如果你的查找值位于其他行,会返回一个N/A错误。 为了克服这个限制,可以使用INDEX MATCH公式。
2.近似匹配与精确匹配
在Excel中进行查找时,无论是水平查找(Hlookup)还是垂直查找(Vlookup),在大多数情况下,你都是在查找一个特定的东西,因此需要一个精确的匹配。 当用近似匹配查找时( 范围查询 设置为 "true "或省略),记住要将第一行的值按升序排序。
欲了解更多信息和公式实例,请参见Excel Hlookup与近似和精确匹配。
3.复制公式时,表格数组的引用发生变化
当使用多个HLOOKUPs来检索一行查询值的信息时,你必须锁定 表_数组 如Hlookup公式中的绝对和相对单元格引用所展示的。
4.插入或删除一个新行
为了理解为什么插入新行会破坏Hlookup公式,请记住Excel HLOOKUP是如何获得查询值的信息的--基于你指定的行索引号。
假设你想获得基于产品ID的销售数据,这些数据在第4行,所以你在第4行输入4 行_index_num 但在插入新行后,它就变成了第5行......而你的Hlookup就停止工作了。 从表中删除现有行时,也可能出现同样的问题。
解决办法是锁定表格,防止用户插入新的行,或者使用INDEX & MATCH代替Hlookup。 在Index/Match公式中,你指定要查询的行,并以范围引用的方式返回值,而不是索引号,Excel足够聪明,可以在运行中调整这些引用。 因此,你可以自由地删除或插入任何你想要的列和行,而无需担心更新你工作表中的每个公式。
5.表格中的重复内容
Excel中的HLOOKUP函数只能返回一个值,即表格中第一个与查询值相匹配的值。
如果你的表中有几条相同的记录,选择以下最适合你的解决方案之一。
- 通过使用Excel的手段或我们的重复去除器去除重复的内容
- 如果重复的记录应该保留在数据集中,创建一个PivotTable,按照你想要的方式来分组和过滤你的数据。
- 使用数组公式提取查找范围内所有重复的值。
6.额外空间
当你明显正确的Hlookup公式返回一堆#N/A错误时,请检查你的表格和查找值是否有多余的空格。 你可以通过使用Excel TRIM函数或我们的Cell Cleaner工具快速删除前导、尾部和多余的中间空格。
7.数字格式化为文本
看起来像数字的文本字符串是Excel公式的另一个绊脚石。 这个问题的详细描述和可能的解决方案在《为什么Excel公式可能停止工作》中描述。
8.查询值超过255个字符
在Excel中,所有的查找功能只有在查找值小于255个字符时才起作用。 一个较长的查找值会导致#VALUE!错误。 由于INDEX /MATCH公式不受这个限制,用它来克服这个障碍。
9.没有指定查找工作簿的完整路径
如果你从另一个工作簿中执行h-lookup,记得要提供完整的路径。 在这里可以找到几个公式的例子:如何从另一个工作表或工作簿中进行Hlookup。
10.错误的论点
我们已经不止一次强调,HLOOKUP是一个要求很高的函数,应该非常谨慎地对待。 下面是几个最常见的由提供错误参数引起的错误。
- 如果row_index_num小于1,HLOOKUP函数会返回#VALUE!错误。
- 如果row_index_num大于table_array中的行数,将返回#REF!错误。
- 如果你用近似匹配搜索,而你的lookup_value小于table_array第一行的最小值,则会返回#N/A错误。
好了,这就是如何在Excel中使用HLOOKUP。 希望你会发现这些信息对你有帮助。 我感谢你的阅读,并希望下周在我们的博客上看到你。
下载实践工作手册
Excel HLOOKUP公式实例