2017-09-05 98 views
0

我試圖將主密鑰更改爲「新密鑰」,如果源和目標匹配舊密鑰。一起使用If和Vlookup聲明

基本上,表1中的主密鑰會查看錶2中是否存在密鑰,如果密鑰存在,它將拉出新的密鑰。如果表2中不存在主密鑰,它將不會改變。這將是最初的出發地和目的地。 我曾嘗試使用vlookups if語句,但是我陷入了邏輯錯誤。有誰知道如何返回新的價值,或者如果有另一種方法來解決這個問題?

我附上了一個例子。 在示例中,表1中的萬能鑰匙是由倫敦和意大利一起製成的。這個主密鑰需要在表2中查找(位於列A)如果它在那裏,它將拉新密鑰(列D)。

enter image description here

+0

爲什麼它會返回LondonItaly而不是London1Italy? –

+0

我正在嘗試使用if和vlookup語句。我認爲它返回了錯誤的值,因爲邏輯錯誤是不正確的。 –

+0

你的問題不清楚。列B和C有什麼用處? –

回答

2

試試這個公式中的Sheet1D2和拖下來,

=IFERROR(VLOOKUP(A2,Sheet2!A:F,4,FALSE),A2) 
1

我會使用一個索引/匹配的解決方案,而不是一個VLOOKUP。 vLookup適用於簡單的任務,但是當你嘗試做更復雜的事情時,它通常不會工作。我現在發現它幾乎每次都是一個更簡單的解決方案(儘管我不確定它在性能上如何比較)。

嘗試這樣的事情在你的表1單元格D2:

=IFERROR(INDEX(Sheet2!$A$2:$F$4,MATCH(Sheet1!A2,Sheet2!$A2:$A4,0),4),Sheet1!A2) 

這將完成開始與匹配部分:

它會檢查列表中Sheet2的A2:A4的比賽與Sheet1單元格A2中的字符串相同。如果發現它,它將返回一個行號,如果沒有,它將返回一個錯誤。

接下來,INDEX將第二個表作爲數據源,並使用匹配和第四列(它是D列)中確定的行號,並返回該值。如果Match返回一個錯誤,這也會返回一個錯誤。

因此,我們使用IFERROR來捕獲表1中MasterKey不存在的情況。在這種情況下,我假設您只想保留表1中的MasterKey,但您可以更改對任何你喜歡的事物。

如果可行,只需將公式從Sheet1!D2下拉到Sheet1!D4。另外,如果您的Table2比您顯示的大得多,您需要調整索引和匹配輸入以引用正確的範圍大小。請記住使用「$」,因爲它們會阻止公式在您拖動它時更改這些單元格。

+1

同意的INDEX和MATCH比VLOOKUP更有用和更動態,當想要返回結果數組而不是單個值時,也值得學習如何使用OFFSET和MATCH。 – PeterH