2016-09-05 77 views
-1

我開始什麼用的相同和不同的條目將兩個清單是這樣的:VBA找到兩個列表

表1

Roger | 1.81 | ... 
Amy | 1.66 | ... 
Tom | 1.85 | ... 
Peter | 1.32 | ... 
Karen | 1.20 | ... 
Lukas | 1.76 | ... 

表2

Josef | 2.02 | ... 
Lukas | 1.76 | ... 
Amy | 1.66 | ... 
Carl | 1.72 | ... 
Roger | 1.81 | ... 

其中|表示同一行中的新列。


我想要的到底是什麼:

Roger | 1.81 | ... 
Amy | 1.66 | ... 
Lukas | 1.76 | ... 

在1而不是2

Karen | 1.20 | ... 
Peter | 1.32 | ... 
Tom | 1.85 | ... 

在2而不是1

Carl | 1.72 | ... 
Josef | 2.02 | ... 

其中條目順序無關緊要。


我不能相信這不是原生在Excel中實現的。我一直需要這樣的工作,並且必須在VBA中的每個條目中愚蠢地循環,這需要一些時間來處理數千條記錄(tαn * m)。當然必須有更優雅的方式。

回答

2

使用A1:A6和B1:B6中的數據,其中A是列表A,B是列表B,使用數組公式將爲您提供在Excel中執行此操作的「本機」方式。

這會給你(在A和B)標準A的行號,你可以把它與其他人混爲一談。在C1中使用並向下拖動公式以獲得結果。

=SMALL(IF(COUNTIF($B$1:$B$6,$A$1:$A$6)>0,ROW($A$1:$A$6)),ROWS($C$1:$C1))

+0

謝謝你的回答! 我將代碼翻譯成德語(使用「;」而不是「,」),我更改了語言設置並使用了原始代碼。兩者都無濟於事。 它沒有錯字嗎? 什麼是等效的VBA代碼? 我想表達的方式是,列表是多個列。 –

+0

你輸入數組公式CTRL + SHIFT + ENTER? –

+0

我在它站在那裏時輸入了它。 我現在把它複製到一個單元格中並按下CTRL + SHIFT + ENTER,但我不明白這個應該做什麼。 無論如何,你可以給VBA等價,因爲這是我將要使用它的方式;並且 - 對那些擅長的人來說沒有任何不良影響 - 更好的實施(=如果它對你有用,它適用於我)。 –