[英]Excel VLOOKUP or INDEX MATCH
假設我有3列數據
AMOUNT(A) AMOUNT(B) INVOICE(C)
55 49 4541
47 47 1515
42 47 4478
86 12 9993
12 100 1224
5 44 1452
100 4287
99 4444
我需要檢查以查看列A中的值是否與列B中的值匹配。如果匹配,它將從列D中的列C返回值。現在這很容易使用VLOOKUP然而我正在處理700多行,有多個匹配的金額。 INDEX(MATCH)可以工作但它只返回一個值。 這是VB唯一的問題嗎?
IE值47存在於B列兩次,因此D列將返回兩個發票號(1515 - 4478)
在VBA中,問題將是微不足道的,因為您已經使用問題語句本身正確描述了邏輯。
僅使用Excel功能,沒有VBA是一個有趣的問題。 您需要執行以下步驟才能獲得如下所示的輸出...
步驟如下:
(B)
和(C)
一個數據透視表,其中行字段為(B)
和(C)
,最小值為AMOUNT(B)
為值字段。 (見下圖) (Q)
,它與列(P)
所有內容完全相同 Contd ...:在列(R)
(遺憾的是恰好位於工作表的列Q中,對不起那里的混淆),如圖所示,對於單元格Q20
,例如放入公式中
=IF(P21=P20,Q21&","&M20,M20)
這將導致創建類似下表的內容:
表:
(P) (Q)
12 9993
44 1452
47 4478,1515
47 4478
49 4541
99 4444
100 4287,1224
100 4287
現在努力工作已經完成。 您需要做的就是使用此輔助表(P)(Q)
VLOOKUP
鍵值對進行查找 - 它將非常快,因為數據透視表始終對其進行排序,因此不需要精確的LOOKUP
。 - 下面顯示了數據透視表以及最終VLOOKUP
公式的屏幕截圖
數據透視表和助手表:
最終公式:
所以我使用Countif來查看是否有基於A列的重復。在D列類型中, =IF(COUNTIF($A$2:$A$9,B2)>0,C2,"")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.