簡體   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