Excel HLOOKUP函数与公式实例

  • Share This
Michael Brown

你可能知道,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中进行水平查询时,请记住以下事实。

    1. HLOOKUP函数只能在 最上面一行 table_array 如果你需要查询其他地方,考虑使用索引/匹配公式。
    2. Excel中的HLOOKUP是 不区分大小写 ,它不区分大写字母和小写字母。
    3. 如果 范围查询 被设置为 "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公式实例

    Michael Brown is a dedicated technology enthusiast with a passion for simplifying complex processes using software tools. With more than a decade of experience in the tech industry, he has honed his skills in Microsoft Excel and Outlook, as well as Google Sheets and Docs. Michael's blog is dedicated to sharing his knowledge and expertise with others, providing easy-to-follow tips and tutorials for improving productivity and efficiency. Whether you're a seasoned professional or a beginner, Michael's blog offers valuable insights and practical advice for getting the most out of these essential software tools.