從問題的描述來看,要在Excel中根據特定條件“例如程式碼+名稱”來取數,但是兩個表編碼與名稱均有出入,因此,簡單使用VLookup函式不行,這種情況下,首先要定義明確編碼和名稱有出入的具體情況,然後根據具體情況進行相應的處理後,再進行相應的匹配和引用。
同時,要使這個過程自動化,一是可以考慮使用VBA,再者可以考慮使用Excel 2016的新功能Power Query(Excel2010或Excel2013可到微軟官方下載相應的外掛)。相比較而言,個人更推薦使用Power Query。
在使用Power Query的情況下,針對問題中提及的多列匹配問題,可參考如下例子的處理:
Step01:獲取資料到PowerQuery
Step02:單擊【開始/合併查詢】
Step03:選擇兩表之間用於匹配的列(多列匹配時,只要在選擇匹配列時按住ctrl鍵就可以選擇多列,要注意兩個表選擇匹配列的順序要一致)。如下圖所示:
Step04:展開要引用的列資訊
Step05:將資料返回Excel
另外,考慮到表間資料的差異,可能需要考慮模糊匹配或先做其他相關處理再進行匹配引用,以下以模糊匹配(根據關鍵詞進行匹配)為例,進行簡單說明:
Step01:獲取關鍵詞及資料來源表資料到Power Query
Step02:關鍵詞查詢中新增自定義列,如下圖所示:
Step03:對待分類表新增自定義列
Step04:對兩表進行合併查詢
Step05:展開合併結果
Step06:新增自定義列判斷是否包含關鍵詞,公式=Text.Contains([物料名稱],[NewColumn.關鍵詞])
Step08:選擇需要保留的資料列
Step09:將資料返回Excel
以上透過兩個簡單的例子體現在Power Query中可以實現的按關鍵字模糊匹配以及按多列進行合併查詢(匹配查詢)的功能,針對問題中所描述的情況,可以綜合運用Power Query中的相關功能,按照資料的存在的邏輯進行處理,然後做相應的資料引用。
從問題的描述來看,要在Excel中根據特定條件“例如程式碼+名稱”來取數,但是兩個表編碼與名稱均有出入,因此,簡單使用VLookup函式不行,這種情況下,首先要定義明確編碼和名稱有出入的具體情況,然後根據具體情況進行相應的處理後,再進行相應的匹配和引用。
同時,要使這個過程自動化,一是可以考慮使用VBA,再者可以考慮使用Excel 2016的新功能Power Query(Excel2010或Excel2013可到微軟官方下載相應的外掛)。相比較而言,個人更推薦使用Power Query。
一、多列匹配處理在使用Power Query的情況下,針對問題中提及的多列匹配問題,可參考如下例子的處理:
Step01:獲取資料到PowerQuery
Step02:單擊【開始/合併查詢】
Step03:選擇兩表之間用於匹配的列(多列匹配時,只要在選擇匹配列時按住ctrl鍵就可以選擇多列,要注意兩個表選擇匹配列的順序要一致)。如下圖所示:
Step04:展開要引用的列資訊
Step05:將資料返回Excel
二、根據關鍵詞模糊匹配另外,考慮到表間資料的差異,可能需要考慮模糊匹配或先做其他相關處理再進行匹配引用,以下以模糊匹配(根據關鍵詞進行匹配)為例,進行簡單說明:
Step01:獲取關鍵詞及資料來源表資料到Power Query
Step02:關鍵詞查詢中新增自定義列,如下圖所示:
Step03:對待分類表新增自定義列
Step04:對兩表進行合併查詢
Step05:展開合併結果
Step06:新增自定義列判斷是否包含關鍵詞,公式=Text.Contains([物料名稱],[NewColumn.關鍵詞])
Step08:選擇需要保留的資料列
Step09:將資料返回Excel
以上透過兩個簡單的例子體現在Power Query中可以實現的按關鍵字模糊匹配以及按多列進行合併查詢(匹配查詢)的功能,針對問題中所描述的情況,可以綜合運用Power Query中的相關功能,按照資料的存在的邏輯進行處理,然後做相應的資料引用。