在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()函数中的各个参数动态的获取我们所需要的结果。本例仅为大家提供一个思路,事实上这样的灵活拓展可以在更多的函数和更的工作实例中应用。希望本节讲解对大家在工作实际中能有所帮助和启发。
附—
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 样式的引用。
领取专属 10元无门槛券
私享最新 技术干货