做一个区分大小写的vlookup

时间:2010-09-20 22:31:19

标签: excel excel-formula

有没有人知道如何使用excel进行区分大小写的vlookup?

5 个答案:

答案 0 :(得分:4)

这里完整解决方案的关键问题是Dick Kusleika观察到:在区分大小写之前发现不区分大小写的匹配时,避免停止搜索。

博客条目Case Sensitive Lookup in Excel声称使用INDEX和MATCH函数解决了这个问题(原始信息由Peo Sjoblom提供)。评论中也有一些备选方案。

答案 1 :(得分:2)

较新的AGGREGATE¹ function可以通过强制不匹配进入错误状态并忽略错误来获取第一,第二,第三等匹配。使用EXACT function修改此方法以选择区分大小写的查找。

nam     date            code
bob     19-Oct-2015     001
BOB     02-Nov-2015     002
boB     28-Oct-2015     002
Bob     24-Oct-2015     004
bOB     27-Oct-2015     005
bOb     21-Oct-2015     006

从中选择 Bob BOB

=INDEX(B$2:B$7, AGGREGATE(15, 6, ROW($1:$6)/EXACT($A$2:$A$7, $E2), 1))

根据需要向下填写。

Case sensitive VLOOKUP

¹ Excel 2010引入了AGGREGATE function。早期版本不提供。

答案 2 :(得分:1)

似乎是vlookup的一个特性,案例并不重要 - 所以Bob和bob一样。您可以使用code()转换为ASCII并在代码上查找。这会使你的查找更复杂,而code()只返回字符串中第一项的代码。

答案 3 :(得分:0)

如果您要返回的值是数字而不是文本,并且您的lookup_table的第一列是唯一的('bob'不会出现多次),那么您可以使用这样的数组公式

=SUM(EXACT(A3:A6,"bob")*(B3:B6))

使用Control + Shift + Enter进入,而不仅仅是输入。它总结了B3:B6中的所有内容,其中A3:A6恰好是“bob”。由于只有一个“鲍勃”,它只是一个单元格的总和。因为它使用SUM,所以返回的字符串将不起作用。

如果'bob'出现不止一次,它将汇总您可能不想要的所有值。

<强>更新

如果您查找的值不是数字,则可以使用数组公式查找该行,然后在其周围包装INDEX函数。假设您的数据是A3:B6,并且您希望根据A列中的完全匹配从B列中提取数据。

=INDEX(A3:B6,SUM(EXACT(A3:A6,"bob")*(ROW(B3:B6)))-2,2)

使用CSE输入。 SUM部分返回找到“bob”的行。您必须从中减去2,因为数据从A3开始(减去比数据开始的行少一个)。 INDEX函数使用该行并从列B拉出。

答案 4 :(得分:-1)

我的第一个想法是使用EXACT()函数来测试vlookup的结果:

=IF(EXACT(VLOOKUP(A2,$C$2:$C$4,1,FALSE),A2),VLOOKUP(A2,$C$2:$C$4,1,FALSE),0)

其中A2 =您想要查找的值,C2:C4是包含要查找的值的范围。

这将返回vlookup的结果,并确认它与您希望查找的值的大小写相匹配。如果匹配大小写,它将返回vlookup结果,否则返回0。

<强> EDITED

实际上这个答案是行不通的。如果你的列表包含“Bob”和“bob”,它会找到第一个并且只测试它。对不起,我没想到。