[英]Doing a case sensitive vlookup
有誰知道如何使用Excel進行區分大小寫的vlookup?
較新的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
從中選擇Bob和BOB ,
=INDEX(B$2:B$7, AGGREGATE(15, 6, ROW($1:$6)/EXACT($A$2:$A$7, $E2), 1))
根據需要填寫並正確填充。
¹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.