上圖中,左方是發料單,右方是退料單。我們可以看到,料號 A00001、 A00008 及 A0009 同時出現在兩張表格上。現在,我們用
VLookup 把它們合併成一張表。下面是完整步驟:
1. 找一欄,把所有料號貼上去。(這裡我們選擇 L 欄),如下圖
2. 首先要處理 "發料量" 的資訊,所以先把游標移動到 M2 位置。在 M2 插入函數,選擇 VLookup,螢幕會彈出下面視窗:
在這裡,我們須輸入 4 個參數,解釋如下:
Lookup_value:就是要找 L2 (料號 A0001) 的這個料號。
Table_array:L2 (料號 A0001) 要在哪個範圍裏去找,這裡就是整個 F 欄跟 G 欄,所以範圍為 F:G。
當然我們也可把範圍設為:F 欄,但因為我們希望在 F 欄找到 L2 (A0001) 這個料號後,可以傳回 發料量 (G 欄) 的值,
所以範圍為設為 F:G。
Column_index_num:在 Table_array 有提過,我們希望在 F 欄找到料號後,可以傳回 發料量 (G 欄) 的值。此時傳回 F 欄的
Column_index_num 是 1,而傳回 G 欄的 Column_index_num 是 2,所以我們輸入 2。因為範圍只有設定 F:G 兩欄,
所以不能輸入 3 以上的值。
Range_lookup:這是一個布林值,只有 True 或 False 兩個選項,如果希望在 F 欄找L2 (A0001) 這個料號時,是完全相等於
A0001,那麼就輸入 False;如果只是要找最接近 A0001 的值,那麼就輸入 True。此時我們希望是找到完全符合
A0001,所以輸入 False。
在 4 個參數都輸入完成後,按下 "確定" 按鈕完成函數輸入。接下來結果會變成:
M2 的值變成 100,100 這個值是 A0001 在 F 欄中視出現在第 2 列,而我們的 Column_index_num 是 2,所以會回傳 F 欄的下一
欄 (也就是 G 欄) 的值。這裡回傳的 100 就是 G2 的值。
3. 接下來,複製 M2 公式,直接往下拉到 M11。如果以函數公式來看,表格會變成:
如果是以值來看,會如下表所示:
4. 接下來,把游標移動到 N2,重複步驟 1 至 3,把退料量的資訊也提出來,填入 N 欄中。如果以函數公式來看,表格會變成:
如果是以值來看,則會是:
5. 我們看到上表中,如果沒有在搜尋範圍中找到對應料號,則會顯示 "#N/A" 這種錯誤。此時,我們可以在函數中插入 "IF" 及 "ISNA" 這
兩個函數來處理 "#N/A" 這種錯誤。函數 ISNA 表示,當 ISNA 所括號裡出現的值為 "#N/A" 時,我們要如何處理。在做進一步處理時,
最好對 IF 函數有一定程度了解,不然會不容易理解。下面是三個函數組合時的介紹。
我們依然先把游標移動 M2, 目前的公式是:
=VLOOKUP(L2,F:G,2,FALSE),
我們在外圍在插入兩個函數,變成:
=IF(ISNA(VLOOKUP(L2,F:G,2,FALSE)), 0, VLOOKUP(L2,F:G,2,FALSE))
新的公式,我們把它放大成下圖來解釋。雙底線的 VLOOKUP(L2,F:G,2,FALSE) 就是原來的公式,它的結果會是一個值。
它會變成是函數 ISNA 的輸入值。如果 VLOOKUP(L2,F:G,2,FALSE) 的值是 "#N/A",那麼 ISNA(VLOOKUP(L2,F:G,2,FALSE))
的值就會是 TRUE (反之則為 FALSE)。
下圖 "1"、"2"、"3" 表示函數 IF 的 3 個輸入函數。當 ISNA(VLOOKUP(L2,F:G,2,FALSE)) = TRUE (也就是 "#N/A") 時,函數 IF
輸出的值是 0 ----- 也就是 "2" 的部分,當 ISNA(VLOOKUP(L2,F:G,2,FALSE)) = FALSE (也就是不為 "#N/A") 時,函數 IF 輸出的值
就是原來的 VLOOKUP(L2,F:G,2,FALSE) ----- 也就是 "3" 的部分。
6. 接下來同樣把公式拉一拉,結果就變成:
這樣在後續的處理上,就會相對容易得多。我們在下一次再繼續後面函數的介紹,以及最後會完成設麼樣的專案。