Excel 依關鍵字自動分類:規則表可用萬用字元的批次 VLOOKUP
費用明細的摘要寫法五花八門:「搭計程車回公司」「計程車資」「計程車 (客戶拜訪)」,要一筆一筆歸成「交通費」。CJP 增益集 (CJPsAddin,免費的 Excel VBA Add-in) 的單檔收集,準備一張分類規則表,程式拿每一筆資料去比對規則,把符合的值寫回來。可以當成批次 VLOOKUP;而且規則可以用萬用字元,例如「*計程車*=交通費」,一條規則就能涵蓋很多種寫法。
適合這些時候用
- 依商品代碼對照表,幫交易明細補上商品名稱、類別
- 依摘要裡的關鍵字,把費用自動歸類
- 依號碼開頭判斷類型,例如 09 開頭是手機
- 依「區域+商品」的組合,套用不同的獎金比例
要從好幾個檔案把資料帶回總表時,用多檔收集。
用 Excel 公式怎麼做?
- VLOOKUP:完全相同的代碼查得到,但萬用字元只能放在「要查的值」,不能放在對照表裡,所以「摘要包含計程車」這種規則做不到
- LOOKUP+SEARCH:可以依關鍵字分類 (關鍵字在規則表 A2:A20、類別在 B2:B20):
=LOOKUP(2^15, SEARCH(規則!$A$2:$A$20, A2), 規則!$B$2:$B$20)
公式不容易看懂,找不到時會變成#N/A,規則多時也會變慢 - 一層一層的 IF:規則一多就很難維護
用 CJP 增益集:3 個步驟
- 準備待分類資料和分類規則表,在增益集選單點「常用功能二 → 資料收集 → 單檔收集」
- 兩張表各填兩個欄位:
- 待分類資料:Key值組成欄 (例如
B1)、分類填入欄 (結果寫在這裡,例如D) - 分類規則表:Key值組成欄 (可以用萬用字元,例如
A1)、分類來源欄 (要帶回的值,例如B)
- 待分類資料:Key值組成欄 (例如
- 按「確定」,整欄填好分類;找不到規則的填
!Not Found!
Key 最後的數字是標題列,兩張表可以不同。填入欄和來源欄的欄數要一樣,依順序一對一帶回。
規則表可以用的萬用字元
| 寫法 | 意思 | 例子 |
|---|---|---|
* | 任意多個字 (也可以沒有) | *計程車*=包含「計程車」 |
? | 任一個字 | P00?=P001~P009、P00A… |
# | 任一個數字 | 09########=09 開頭的 10 位數字 |
[ABC] | 括號裡的任一個字 | [AB]*=A 或 B 開頭 |
[!A] | 不是括號裡的字 | [!0]*=不是 0 開頭 |
比對時不分大小寫。要找真正的 *、?、# 符號,寫成 [*]、[?]、[#]。
常見問題
一筆資料同時符合好幾條規則,會用哪一條?
預設由上往下找到第一個符合的規則就停,所以特殊規則放上面、通用規則放下面。勾選「帶回最後一項相符者」時,會比完全部規則,以最後一個符合的為準。
規則「0*=市話」在「09########=手機」上面,0912345678 會分成什麼?
不勾選「帶回最後一項相符者」時是市話:0912345678 先符合「0*」。把手機的規則移到上面,或勾選該選項,就會變成手機。
分類填入欄原本有內容,會被保留嗎?
不會。分類填入欄會整欄重寫,原本的內容會被蓋掉,請先備份或選一個空白欄。
電話號碼有「-」,用 # 對得到嗎?
對不到。# 只代表數字,09######## 對不到 0912-345-678。
要付費嗎?公司電腦可以裝嗎?
免費。安裝方式和注意事項請看安裝方式。