無需使用數組公式或 VBA 從兩列中提取唯一值的列表

無需使用數組公式或 VBA 從兩列中提取唯一值的列表

我有兩列數據,A 和 B。目前,我正在使用來自的數組公式https://www.get-digital-help.com/2009/06/16/extract-an-unique-distinct-list-from-two-columns-using-excel-2007-array-formula/:

{=IFERROR(IFERROR(INDEX($A$2:$A$20, MATCH(0, COUNTIF($C$1:C1, $A$2:$A$20), 0)), INDEX($B$2:$B$7, MATCH(0, COUNTIF($C$1:C1, $B$2:$B$7), 0))), "")} 

雖然這效果非常好,但我想盡可能避免使用陣列公式,因為它們會顯著降低我們已經很糟糕的電腦的速度。由於某些原因,我們也無法使用 VBA,因此這也不是一個選項。

有什麼辦法可以做到這一點嗎?

答案1

好吧,我找到了一種方法,目前看來可行,但它確實不太漂亮。

A 列有一組數據,例如 200 個總計值。

B 列有第二組數據,例如 175 個值。

C 列檢查 B 列中的值是否存在於 A 列中

 =IF(COUNTIF($A$2:$A$750,B2)>0,"Match","No Match")

E 列有一個計數,僅追蹤我們相對於 A 列資料集末端的位置

=IF(A2=0,MAX($E$1:E1)+1,"")

F 列的計數在 C 列指示唯一值時遞增

=IF(C2="No Match",MAX($F$1:F1)+1,"")

G 欄位是兩組資料組合的地方。首先,它列出 A 中的值。

=IF(A2=0,IF(E2>MAX(F:F),"",INDEX(B:B,MATCH(E2,F:F))),A2)

答案2

關於如何提取獨特且獨特的價值有很好的討論這個 Excel 教學網站

你的問題的答案是肯定的,它只涉及為每個部分使用額外的 INDEX() 。這是修改:

=IFERROR(INDEX($A$2:$A$20,MATCH(0,INDEX(COUNTIF($C$1:C1,$A$2:$A$20),0),0)),INDEX($B$2:$B$7,MATCH(0,INDEX(COUNTIF($C$1:C1,$B$2:$B$7),0),0)))

我省略了最外面的 IFERROR()。希望這可以幫助。

相關內容