繁体   English   中英

进行区分大小写的vlookup

[英]Doing a case sensitive vlookup

有谁知道如何使用Excel进行区分大小写的vlookup?

正如Dick Kusleika观察到的那样,此处完整解决方案的关键问题是:避免在区分大小写的匹配项之前找到不区分大小写的匹配项,避免停止搜索。

Excel中的博客条目“区分大小写查找”声称使用INDEX和MATCH函数可以解决此问题(原始信息由Peo Sjoblom提供)。 评论中也有其他选择。

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

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

从中选择BobBOB

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

根据需要填写并正确填充。

区分大小写的VLOOKUP


¹AGGREGATE函数是Excel 2010引入的。在早期版本中不可用。

大小写似乎无关紧要是vlookup的一个功能-因此Bob与bob相同。 您可以使用code()转换为ASCII并在代码上查找。 这会使您的查找更加复杂,并且code()仅返回字符串中第一项的代码。

如果返回的值是数字而不是文本,并且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开始(比数据开始的行少1)。 INDEX函数使用该行并从B列中提取。

我的第一个想法是使用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。

已编辑

其实这个答案是行不通的。 如果您的列表包含“鲍勃”和“鲍勃”,它将找到第一个并且仅对其进行测试。 抱歉,我没想到。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM