image

在`link:/ formulas-and-functions-introduction-vlookup-function [VLOOKUP function]`中,我们经常定义col_index_no static。我们在VLOOKUP公式中对它进行硬编码,例如VLOOKUP(id,data,3,0)。当我们在数据中插入或删除列时会出现问题。如果我们在第三列之前或之后删除或添加一列,则第三列将不再引用预期的列。这是一个问题。其他情况是您有多个要查找的列。您需要在每个公式中编辑列索引。简单的复制粘贴将无济于事。

但是,如果您可以告诉VLOOKUP查看标题并仅返回匹配的标题值,该怎么办。这称为双向VLOOKUP。

例如,如果我为marks列使用了一个VLOOKUP公式,则VLOOKUP应该在数据中查找marks列并从该列返回值。这将解决我们的问题。

通用公式
=VLOOKUP(lookup_value,table_array,MATCH(lookup_heading,table_headings,0),0)

Lookup_value:table_array第一列中的查找值。

Table_array:您要在其中进行查找的范围。例如,A2,D10。

Lookup_heading:要在table_array的标题中查找的标题。

Table_headings:表数组中标题的引用。例如。如果表是A2,D10,并且标题位于每列的顶部,则其为A1:D1。

image

因此,现在我们知道了动态col_index的需求,让我们通过示例清除所有问题。

动态VLOOKUP示例对于此示例,我们有此表,该表包含范围A4:E16中的学生数据。

使用滚动号和标题,我想从该表中检索数据。对于此实例,在单元格H4中,我想获取单元格G4中未写入的滚动数据以及在H3中前进的数据。如果更改标题,则应在单元格H4中检索相应范围的数据。

将此公式写在单元格H4中

=VLOOKUP(G4,B4:E16,MATCH(H3,B3:E3,0),0)

由于我们的表数组为B4:E16,因此标题数组为B3:E3。

注意:如果数据结构良好,则列标题将具有相同的列数,并且它是表中的第一行。

image

工作原理:

因此,主要部分是自动评估列索引号。

为此,我们使用了MATCH函数。

MATCH(H3,B3:E3,0):由于H3包含“学生”,因此MATCH将返回2。如果H3拥有“等级”,它将返回4,依此类推。 VLOOKUP公式最终将具有col_index_num。

众所周知,link:/ lookup-formulas-excel-match-function [MATCH]

=VLOOKUP(G4,B4:E16,2,0)

函数返回提供的一维范围内给定值的索引号。因此,`link:/ lookup-formulas-excel-match-function [MATCH]`将查找在H3中写入的B3:E3范围内的任何值,并返回其索引号。

现在,只要您在H3中更改标题,就在标题中,此公式都会从相应列中返回一个值。否则,您将遇到#N / A错误。

快速在多个列中进行VLOOKUP

在上面的示例中,我们需要一个列值的答案。但是,如果您想一次获得多个列,该怎么办。如果您复制上面的公式,它将返回错误。我们需要对其进行一些小的更改以使其可移植。

在VLOOKUP中使用`link:/ excel-range-name-absolute-reference-in-excel [Absolute References]`在单元格H2中编写以下公式。

image

现在,将H2复制到H2:J6范围内的所有单元格中,以填充数据。

=VLOOKUP($G2,$B$2:$E$14,MATCH(H$1,$B$1:$E$1,0),0)

image

工作原理:

在这里,我给了每个范围的`link:/ excel-range-name-absolute-reference-in-excel [absolute reference]`,除了VLOOKUP($ G2)

的查找值中的行。和MATCH(H $ 1)的lookup_value中的列。

$ G2:这将允许该行在向下复制时更改VLOOKUP函数的查找值,但在向右复制时限制该列的更改。这将使VLOOKUP仅在相对行中从G列中查找ID。

同样,H $ 1将允许在水平复制时更改列,而在向下复制时限制行。

使用命名范围

上面的示例工作正常,但在阅读和编写此公式时遇到了挑战。这根本不是便携式的。使用命名范围可以简化此过程。

我们将首先在这里命名。在此示例中,我将$ B $ 2:$ E $ 14命名为Data $ B $ 1:$ E $ 1:作为标题H $ 1:将其命名为Heading。使列相对。为此,选择H1。按CTRL + F3,单击new,在“引用”部分中,从H的前面删除“ $”。 $ G2:同样,将其命名为RollNo。这次通过从2的开头删除’$’使行相对。

现在,当您在工作表上拥有所有名称时,可将此公式写在excel文件的任何位置。它总是会得到正确的答案。

image

看,任何人都可以阅读并理解它。

因此,使用这些方法,可以使col_index_num动态化。让我知道这在下面的评论部分是否有帮助。

=VLOOKUP(RollNo,Data, MATCH(Heading, Headings,0),0)

相关文章:

链接:vlookup-functions / formulas-and-functions-introduction-vlookup-function [如何在Excel中使用VLOOKUP功能] ||||链接:/ excel-范围-名称-所有名称-范围-excel [Excel中的命名范围]`

链接:/ lookup-formulas-如何从不同的Excel工作表中查找vlookup [如何从不同的Excel工作表中查找VLOOKUP]

link:/ lookup-formulas-vlookup-multiple-values [VLOOKUP Multiple Values]

热门文章

`link:/ keyboard-formula-shortcuts-50-excel-shortcuts来提高您的生产率[50 Excel Shortcut以提高生产率]:更快地完成任务。这50个快捷键将使您在Excel上的工作速度更快。

`link:/ formulas-and-functions-introduction-vlookup-function [如何在Excel中使用VLOOKUP函数]’:这是excel中最常用和最受欢迎的函数之一,用于从不同范围查找值和床单。

链接:/ tips-countif-in-microsoft-excel [如何在Excel中使用COUNTIF函数]:使用此惊人的函数对条件进行计数。您无需过滤数据即可计算特定值。 Countif功能对于准备仪表板至关重要。

如何在Excel中使用SUMIF函数:这是另一个仪表板必需的函数。这可以帮助您汇总特定条件下的值。