我有兩列數據,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()。希望這可以幫助。