美文网首页学好EXCEL玩转ExcelExcel 加油站
案例:EXCEL部分匹配的问题

案例:EXCEL部分匹配的问题

作者: Excel活学活用 | 来源:发表于2017-01-04 22:03 被阅读53次

这是很早以前发表在博客上的一篇旧文,简化了原来的公式。

需求:

产品名称中包含了某类信息,比如品牌、规格、型号等,已经定义了基础的品牌分类,但产品名称会有变化(品牌关键字不会变)。要求在输入产品名称的时候,自动带出品牌

思路:

1、在产品名称中查找品牌名称,用search函数,包含品牌名称则返回位置值;

2、找出1所对应的品牌名称,用lookup函数;

解决:

1、准备两张表:产品登记表,用来登记产品,品牌名称表,用来登记维护品牌名称;

2、在品牌名称表中A列填写具体的品牌名称,定义名称pinpai,公式=OFFSET(品牌名称表!$A$1,1,,COUNTA(品牌名称表!$A:$A)-1,1),要求添加品牌时要连续,不要留空单元格,可以动态更新名称的引用区域。

3、表样

(1)产品登记表

(2)品牌名称表

附:公式解读

一、定义动态列表名称【=OFFSET(品牌名称表!$A$1,1,,COUNTA(品牌名称表!$A:$A)-1,1)】


1、OFFSET(reference, rows, cols, [height], [width]):返回对单元格或单元格区域中指定行数和列数的区域的引用。 返回的引用可以是单个单元格或单元格区域。 可以指定要返回的行数和列数。

――在这里:用来取得品牌列表区域引用

2、COUNTA 函数计算范围中不为空的单元格的个数。

――在这里:用来实现对名称区域的动态引用,顺序增加时能自动更新引用

二、取品牌名称公式【=IF(A2="","",LOOKUP(9^9,SEARCH(pinpai,A2),pinpai))】

1、=IF(Something is True, then do something, otherwise do something else),判断条件为真,则执行随后的公式、命令,条件为假则执行最后面的公式、命令。

――在这里:用来隐藏错误值,如果A列没有输入产品名称,则显示为空。这种用法非常广泛。

2、LOOKUP(lookup_value, lookup_vector, [result_vector]),在单行区域或单列区域(称为“向量”)中查找值,然后返回第二个单行区域或单列区域中相同位置的值。

如果LOOKUP函数找不到lookup_value,则该函数会与lookup_vector中小于或等于lookup_value的最大值进行匹配。

如果lookup_value小于lookup_vector中的最小值,则LOOKUP会返回 #N/A 错误值。

――在这里:用来查找对应品牌名称,9^9表示一个极大的数值,确保能在后的查找范围中找到比它小的值。

3、SEARCH(find_text,within_text,[start_num]):可在第二个文本字符串中查找第一个文本字符串,并返回第一个文本字符串的起始位置的编号,该编号从第二个文本字符串的第一个字符算起。

――在这里:用来查找A列的产品名称中是否包含品牌名称,有则显示在该单格内字符位置值,是一个数值,没有则显示错误值#VALUE!

相关文章

网友评论

    本文标题:案例:EXCEL部分匹配的问题

    本文链接:https://www.haomeiwen.com/subject/fxeavttx.html