罗宾问是否有一种方法可以区分大小写。

她的查找表/范围具有相似的条目(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区分大小写]。