使VLOOKUP区分大小写(Microsoft Excel)
罗宾问是否有一种方法可以区分大小写。
她的查找表/范围具有相似的条目(AbC和aBC),唯一的区别是字母的大小写。由于唯一值至关重要,因此她无法更改值(将它们全部变为大写或小写)。
VLOOKUP函数无法检查信息的大小写。不区分大小写。但是,有几种方法可以解决此缺点。一种方法是使用CODE函数创建可由VLOOKUP搜索的中间列。假设原始数据在B列中,则可以将以下公式放在单元格A1中,然后将其复制到该列中:
=CODE(LEFT(B1,1))&"."&CODE(MID(B1,2,1))&"."&CODE(RIGHT(B1,1))
此公式查看单元格B1中任何内容的前三个字符,并将这些字符转换为以句点分隔的十进制字符代码。因此,如果A1包含“ ABC”,则B1将包含“ 65.66.67”。
假设要查找的值在单元格C1中,则可以将以下内容用作VLOOKUP公式:
=VLOOKUP(CODE(LEFT(C1,1))&"."&CODE(MID(C1,2,1))&"."& CODE(MID(C1,3,1)), A:B,2,)
另一种方法是使用EXACT函数来确定您要查找的内容的位置。这种方法根本不使用VLOOKUP,而是依靠INDEX函数。该公式假定您要比较的单元格在A列中,而您要返回的是B列中的相应单元格。
=IF(MIN(IF(EXACT(C1,$A$1:$A$100),ROW($A$1:$A$100)))=0,NA(), INDEX($B$1:$B$100,MIN(IF(EXACT(C1,$A$1:$A$100),ROW($A$1:$A$100)))))
该公式需要作为数组公式输入(Shift + Ctrl + Enter)。公式的第一部分(第一个EXACT实例)将C1(您要查找的内容)与A1:A100范围内的每个值进行比较。由于这是一个数组公式,在这种情况下,根据是否存在完全匹配,最终将得到100个True / False值。如果存在匹配项,则第一个ROW函数将返回匹配项的行,并且使用INDEX函数从该行的B列中获取值。
在某些情况下,您可能想创建自己的用户定义函数,该函数将为您执行查找。以下是此类宏的示例:
Function CaseVLook(compare_value, table_array As Range, _ Optional col_index As Integer = 1) Dim c As Range Dim rngColumn1 As Range Application.Volatile Set rngColumn1 = table_array.Columns(1) CaseVLook = "Not Found" 'Loop first column For Each c In rngColumn1.Cells If c.Value = compare_value Then CaseVLook = c.Offset(0, col_index - 1).Value Exit For End If Next c End Function
要使用该宏,只需使用您要查找的值(例如单元格C1),应搜索其第一列的范围(例如A:B)以及该范围内列的偏移量调用函数即可,如下所示:这里:
=CaseVLook(C1,A:B,2)
在下面的知识库文章中可以找到一些其他方法:
http://support.microsoft.com/kb/214264
注意:
如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。
链接:/ excelribbon-ExcelTipsMacros [点击此处在新的浏览器标签中打开该特殊页面]。
_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。
本技巧(6833)适用于Microsoft Excel 97、2000、2002和2003。可以在以下功能区中为Excel的功能区界面(Excel 2007及更高版本)找到本技巧的版本:
链接:/ excelribbon-Making_VLOOKUP_Case_Sensitive [使VLOOKUP区分大小写]。