您当前的位置 :天津滨海网>资讯频道 > 快讯 > 正文
vlookup函数的使用方法,来获取各类信息
2020-12-08 14:06:48 来源:office实验室 编辑:

在Excel 中Vlookup函数是很常用到的用于匹配数据的函数。

今天我们要更进一步地学习它的进阶用法。

如下图所示:

我们在左侧黄色单元格分别输入查询编号,商场号,是否促销

来获得左下的商品编号,商品名称,价格

在本例中主要使用VLOOKUP函数来实现

具体步骤如下:

在左下侧B7单元格输入=B2B8单元格输入=VLOOKUP(B7,INDIRECT($B$3),2,0)B9单元格输入=VLOOKUP(B7,INDIRECT($B$3),$C$4,0)C4单元格输入=IF(B4="是",3,4),这里C4单元格的取值由B4单元格的值来决定的当为4时C4就是3否则是4。这样就可以通过是、否促销来改价格了。在B3单元格设置数据有效性

6. 在B4单元格设置数据有效性

这里具体说下INDIRECT($B$3)

这里的INDIRECT($B$3)等效于三张表的A:D

当B3单元格是store_28时对应的是28商场的表的A:D的区域,store_28是通过菜单中的公式——定义名称来定义的。如下图所示:

当$B$3单元格变为store_16 时数据源就是16商场的数据了

INDIRECT($B$3)作用是随着B3的变化将相应的数据源引用提取出来。

我们来看下使不使用INDIRECT() 的差别:

如:

B8单元格输入=VLOOKUP(B7,INDIRECT($B$3),2,0)

B7=20944

B3=store_28

等效:

=VLOOKUP(20944,'28'!$A:$D,2,0) 。

B8单元格输入=VLOOKUP(B7,$B$3,2,0)

B7=20944

B3=store_28

等效:

=VLOOKUP(20944,“store_28”,2,0) ,这样就会出错“store_28”不是一个数据区域而是一个字符,通过INDIRECT(“store_28”)能将其解析出'28'!$A:$D 区域。

通过本例的学习我们能够掌握通过更加灵活的改变VLOOKUP()函数中的各个参数动态的获取我们所需要的结果。本例仅为大家提供一个思路,事实上这样的灵活拓展可以在更多的函数和更的工作实例中应用。希望本节讲解对大家在工作实际中能有所帮助和启发。

更多作者文章

EXCEL 的分行使用技巧

在Excel中如何根据日期动态改变可编辑区域?

如何让电脑自动帮你打印文档

如何使用EXCEL 制作动态密码登入窗体

附:VLOOKUP()、INDIRECT()、IF() 的语法:

语法:

VLOOKUP函数:

VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])

VLOOKUP 函数语法具有下列参数 (参数:为操作、事件、方法、属性、函数或过程提供信息的值。):

lookup_value必需。要在表格或区域的第一列中搜索的值。lookup_value参数可以是值或引用。如果为lookup_value参数提供的值小于table_array参数第一列中的最小值,则VLOOKUP将返回错误值 #N/A。table_array必需。包含数据的单元格区域。可以使用对区域(例如,A2:D8)或区域名称的引用。table_array第一列中的值是由lookup_value搜索的值。这些值可以是文本、数字或逻辑值。文本不区分大小写。col_index_num必需。table_array参数中必须返回的匹配值的列号。col_index_num参数为 1 时,返回table_array第一列中的值;col_index_num为 2 时,返回table_array第二列中的值,依此类推。如果col_index_num参数:小于 1,则VLOOKUP返回错误值 #VALUE!。大于table_array的列数,则VLOOKUP返回错误值 #REF!。range_lookup可选。一个逻辑值,指定希望VLOOKUP查找精确匹配值还是近似匹配值:如果range_lookup为 TRUE 或被省略,则返回精确匹配值或近似匹配值。如果找不到精确匹配值,则返回小于lookup_value的最大值。要点如果range_lookup为 TRUE 或被省略,则必须按升序排列table_array第一列中的值;否则,VLOOKUP可能无法返回正确的值。有关详细信息,请参阅对区域或表中的数据进行排序。如果range_lookup为 FALSE,则不需要对table_array第一列中的值进行排序。如果range_lookup参数为 FALSE,VLOOKUP将只查找精确匹配值。如果table_array的第一列中有两个或更多值与lookup_value匹配,则使用第一个找到的值。如果找不到精确匹配值,则返回错误值 #N/A。

INDIRECT函数:

INDIRECT(ref_text, [a1])

INDIRECT 函数语法具有以下参数 (参数:为操作、事件、方法、属性、函数或过程提供信息的值。):

Ref_text必需。对单元格的引用,此单元格包含 A1 样式的引用、R1C1 样式的引用、定义为引用的名称或对作为文本字符串的单元格的引用。如果 ref_text 不是合法的单元格的引用,函数 INDIRECT 返回错误值 #REF! 。如果 ref_text 是对另一个工作簿的引用(外部引用),则那个工作簿必须被打开。如果源工作簿没有打开,函数 INDIRECT 返回错误值 #REF! 。如果 ref_text 引用的单元格区域超出行限制 1,048,576 或列限制 16,384 (XFD),则 INDIRECT 返回 #REF! 错误。注释此行为不同于 Microsoft Office Excel 2007 之前的 Excel 版本,早期的版本会忽略超出的限制并返回一个值。A1可选。一个逻辑值,用于指定包含在单元格 ref_text 中的引用的类型。如果 a1 为 TRUE 或省略,ref_text 被解释为 A1-样式的引用。如果 a1 为 FALSE,则将 ref_text 解释为 R1C1 样式的引用。

IF函数:

IF(logical_test, [value_if_true], [value_if_false])

IF 函数语法具有下列参数 (参数:为操作、事件、方法、属性、函数或过程提供信息的值。):

logical_test必需。计算结果可能为 TRUE 或 FALSE 的任意值或表达式。例如,A10=100 就是一个逻辑表达式;如果单元格 A10 中的值等于 100,表达式的计算结果为 TRUE;否则为 FALSE。此参数可使用任何比较运算符。value_if_true可选。logical_test参数的计算结果为 TRUE 时所要返回的值。例如,如果此参数的值为文本字符串“预算内”,并且logical_test参数的计算结果为 TRUE,则IF函数返回文本“预算内”。如果logical_test的计算结果为 TRUE,并且省略value_if_true参数(即logical_test参数后仅跟一个逗号),IF函数将返回 0(零)。若要显示单词 TRUE,请对value_if_true参数使用逻辑值 TRUE。value_if_false可选。logical_test参数的计算结果为 FALSE 时所要返回的值。例如,如果此参数的值为文本字符串“超出预算”,并且logical_test参数的计算结果为 FALSE,则IF函数返回文本“超出预算”。如果logic

分享到:
版权和免责申明

凡注有"天津滨海网"或电头为"天津滨海网"的稿件,均为天津滨海网独家版权所有,未经许可不得转载或镜像;授权转载必须注明来源为"天津滨海网",并保留"天津滨海网"的电头。