連接兩列以建立資料列表

連接兩列以建立資料列表

我目前有兩列需要比較。 A 列,表 1 和 A 列,表 2。

表 1 包含:

A      B       C
5000   Apples  WI
6182   Oranges NY
7271   Grapes  MN
2293   Peanuts FL

表 2 包含:

A
4032
5233
7271
2293

應該會收到類似的結果.....

7271   Grapes  MN
2293   Peanuts FL

我只需要顯示包含與工作表 2 相同數字的結果。

    'For i = 1 to Sheet1LastRow

    Sheet2Row = Range("A" & Rows.Count).End(xlUp).Row
    Sheet2Array = Range("A2:A" & Sheet2LastRow).Value
            For i = LBound(Sheet2Array, 1) To UBound(Sheet2Array, 1)

    'if cell = Sheet2Array(i, 1)
     '....
    'End if

    Next i

   'Next Cell sheet 1

答案1

這是 的核心功能=VLOOKUP()

語法是:

=VLOOKUP(
         compare this cell, 
         to the cells in the leftmost column of this range,
         returning the corresponding value from this column index,
         true/false for range lookup (just leave this false if you aren't sure)
 )

在工作表 2 上,您將在儲存格 B1 中放置=VLOOKUP(A1,Sheet1!A:B,2,False),在 C1 中您將放置=VLOOKUP(A1,Sheet1!A:C,3,False)

此功能適用於工作表之間以及工作簿之間(但您必須啟用連結並注意兩個工作簿的變更)。不需要 VBA,這是一個簡單的內聯函數。

在此基礎上進行擴展,您可能會#N/A因來源表中不存在的值而出現錯誤。將公式換行=IFERROR( your vlookup() function , "" )以空白儲存格取代任何錯誤。

答案2

從您的問題和範例數據來看,很明顯,您正在尋找的輸出是一列,該列在連續的單元格區塊中包含匹配的數據,中間沒有任何空白或錯誤。

如果您希望使用公式方法,則可以在陣列公式中使用稍微複雜的 INDEX 和 MATCH 函數來實現。一旦列中的連續儲存格中有匹配的數據,只需應用 VLOOKUP 從 Sheet1 的主表中取得剩餘的兩個欄位。

就是這樣。下面是Sheet1和Sheet2的兩張截圖。

在此輸入影像描述

在此輸入影像描述

Sheet1 在 A、B 和 C 欄位中包含您的主表,Sheet2 具有與 Sheet1 中的 A 欄位相符的列表

現在在 Sheet2 中的儲存格 C1 中輸入下列陣列公式

{=INDEX(Sheet1!$A$1:$A$4,SMALL(IF(ISERROR(MATCH(Sheet2!$A$1:$A$4,Sheet1!$A$1:$A$4,0)),"",MATCH(Sheet2!$A$1:$A$4,Sheet1!$A$1:$A$4,0)),ROW(1:1)))}

將此公式放在不含大括號的情況下,然後在公式列中按 CTRL+SHIFT+ENTER 建立陣列公式並將其向下拖曳,直到儲存格或要符合的清單長度出現錯誤。現在,錯誤儲存格上方的所有行都具有 Sheet1 的 A 列中的符合儲存格。

只需清除錯誤單元格,您就可以在連續的單元格區塊中獲得清單。

現在在 D1 中輸入相對簡單的 VLOOKUP 公式以從 Sheet1 中取得下一個符合列

=VLOOKUP(C1,Sheet1!$A$1:$C$4,2,FALSE)

在E1中輸入公式

=VLOOKUP(C1,Sheet1!$A$1:$C$4,3,FALSE)

並將兩者都拖下來。您已獲得所需的清單。

您可以使用 Excel 的內建評估公式選項來評估 INDEX MATCH 組合,以了解其運作方式。它會建立一個符合行號的數組,並在您向下拖曳公式時選擇第一個、第二個、第三個最小的數字。

這裡的兩個限制是,資料應按其在主表中存在的順序返回,而不是按其在「要匹配」表中的順序返回,如果您有多個匹配單元格,則應返回第一個。

相關內容