員工資料建檔 Excel 時,編號補零、姓名遮蔽、手機格式與異常檢查,都可以用函數與自訂格式完成。贊贊小屋用同一份員工資料表實際操作 7 組範例,並說明各自的原理與限制,方便人資、行政與會計人員整理自己的資料。
一、員工編號補零:IF 函數與文字串接
員工編號是 A 欄的 1 到 10,贊贊小屋在 D 欄「編號1」與 E 欄「編號2」分別用兩種公式補零。D 欄輸入的是 ="000"&A12,不論編號是多少,一律在前面接上三個 0;E 欄輸入的是 =IF(A12<10,"000"&A12,"00"&A12),先判斷編號是否小於 10,小於 10 補三個 0,否則補兩個 0。
兩欄的結果在編號 1 到 9 時完全一樣,都是 0001 到 0009。差別出現在第 12 列的編號 10:D12 變成 00010,變成五位數;E12 則是 0010,維持四位數。這個對照說明了固定補零的問題,編號的位數一增加,前面補的 0 就會多出來;加上 IF 判斷之後,補零的數量才會跟著編號的位數調整。
公式裡的 & 是 Excel 的文字串接運算子,它不是加法,而是把前後兩段內容接成一段文字。"000"&A12 的意思是把文字 000 和 A12 的內容接在一起,因此得到的 0001 是文字,不再是數值 1。員工編號看起來還是數字,但資料型態其實已經改變,這一點會影響後續的排序、比對與匯出。
這一節的 IF 公式也有它的邊界。它只區分「小於 10」與「其他」兩種情況,用在編號 1 到 99 沒有問題,一旦編號到了 100,就會變成 "00"&100,得到五位數的 00100。因此它比較適合當成理解條件判斷的範例,不是所有員工編號的通用公式。補充一個較通用的做法,是 =TEXT(A3,"0000"),TEXT 函數會依照指定的格式碼把數值轉成文字,編號 1、10、100、1000 分別會得到 0001、0010、0100、1000,不需要再寫條件判斷。這個 TEXT 的寫法是補充的延伸知識,不是這份資料表中實際操作的內容。
二、員工編號格式:Excel 自訂格式補零
不使用公式拆字,也可以讓員工編號顯示成四位數。贊贊小屋在 F 欄「編號3」的 F3 輸入 =A3,只是單純引用 A 欄的員工編號,接著開啟「設定儲存格格式」視窗,在「數值」頁籤的類別選擇「自訂」,於「類型」欄位輸入 0000。視窗上方的「範例」會即時顯示 0001,套用之後,F 欄的 1 顯示為 0001,第 12 列的 10 顯示為 0010。
這個做法和第一節最大的差別,是儲存格裡的內容仍然是數值。="000"&A3 與 =TEXT(A3,"0000") 都會得到文字的 0001,而 =A3 搭配自訂格式 0000 得到的,是顯示成 0001 的數值 1,補出來的 0 只存在於畫面上。三種做法可以整理成下面的比較:
| 方法 | 顯示結果 | 實際資料型態 |
|---|---|---|
="000"&A3 | 0001 | 文字 |
=TEXT(A3,"0000") | 0001 | 文字 |
=A3 搭配自訂格式 0000 | 0001 | 數值 |
因為數值仍然保留,自訂格式補零的資料還可以繼續做排序、比大小或其他數學運算。格式碼中的 0 是「沒有對應數字時也要補出 0」,# 則是「沒有對應數字就不顯示」,所以同樣是數值 12,設定成 0000 會顯示 0012,設定成 #### 只會顯示 12。另外要留意,0000 代表的是最少四位數,不是最多四位數,數值超過 9999 時並不會被截斷,更完整的格式碼寫法可以參考 Microsoft 的自訂數字格式的指導方針。
自訂格式只改變外觀,這也是使用上最需要小心的地方。如果編號只在 Excel 內部查看,這個方法簡潔又不容易出錯;但如果資料要匯出成 CSV、貼到其他系統,或是當成資料庫的識別碼,就必須先確認對方收到的是儲存的數值,還是畫面上看到的文字,否則補出來的 0 很可能在傳輸過程中消失。因此,第一節與第二節可以這樣區分:函數補零會產生文字,自訂格式補零則保留數值,要選哪一種,取決於這份編號之後要怎麼被使用。TEXT 輸出文字、自訂格式只改變顯示的差異,在日期上也成立,可以延伸閱讀 Excel 日期格式轉換 yyyy mm dd。
三、員工姓名遮蔽:LEFT 與 RIGHT 函數
員工名單要放進報表或對外展示時,常常需要遮蔽部分姓名。這份資料表的 C 欄是完整的員工姓名,贊贊小屋先新增兩個輔助欄位:D 欄「姓」輸入 =LEFT(C3,1),取出姓名最左邊的 1 個字;E 欄「名」輸入 =RIGHT(C3,1),取出姓名最右邊的 1 個字。再到 F 欄「姓名」輸入 =D3&"X"&E3,用 & 把「姓」、英文字母 X 與「名」接起來。C3 的「吳玉寒」於是變成「吳X寒」,往下填滿後,其他幾位員工也都是同樣的格式,例如「劉夏易」變成「劉X易」。
LEFT 與 RIGHT 是最基本的文字擷取函數,LEFT 從左邊開始取,RIGHT 從右邊開始取,第二個參數代表要取幾個字元。=LEFT("ABC123",3) 會得到 ABC,=RIGHT("ABC123",3) 會得到 123,所以它們不只能處理姓名,也適合處理產品編號、部門代碼這類格式固定的文字資料。如果想取的是中間的字元,可以再搭配 MID,例如 =MID(C3,2,1) 可以取得「吳玉寒」中間的「玉」;以員工編號 AB2026001 為例,LEFT 可以取出前面的部門代碼 AB,MID 則可以取出年份 2026。這三個函數合在一起,就是整理文字資料的基本工具組,RIGHT 搭配 LEN 的更多文字處理組合,可以延伸閱讀 Excel Right Len 用法。MID 的用法同樣是補充說明,不是這份資料表中實際操作的公式。
不過,這一節的公式有一個前提:姓名剛好是三個字。如果遇到兩個字的姓名,LEFT 與 RIGHT 各取一個字,再把 X 插在中間,結果只是把原本兩個字都保留下來,中間多了一個 X,並沒有真正遮蔽任何內容;遇到四個字的姓名,則中間會有兩個字被一個 X 取代,遮蔽結果也和預期不同。所以姓名遮蔽的公式必須先確認資料的姓名長度,必要時搭配第七節會用到的 LEN,先判斷字數再決定怎麼處理。
還要提醒的是,這種遮蔽只是產生一個新的顯示結果,原本 C 欄的完整姓名依然存在。如果資料真的要提供給外部人員,必須另外把原始姓名欄位移除,不能把遮蔽公式當成已經完成個資匿名化。
四、員工姓名取代:REPLACE 函數
第三節的做法需要先拆出「姓」與「名」兩個輔助欄位。贊贊小屋接著在同一張資料表中並排比較了三種寫法:「姓名1」欄使用 =D3&"X"&E3,依靠事先拆好的 D、E 兩欄;「姓名2」欄使用 =LEFT(C3,1)&"X"&RIGHT(C3,1),直接從完整姓名擷取,不需要輔助欄位;「姓名3」欄則使用 =REPLACE(C3,2,1,"X"),直接把姓名的第 2 個字取代成 X。三種公式的結果完全相同,C3 的「吳玉寒」都得到「吳X寒」,整排員工姓名也都一致。
REPLACE 函數有四個參數,語法是 =REPLACE(原始文字,開始位置,取代字元數,新文字)。以 REPLACE(C3,2,1,"X") 來看,原始文字是 C3 的「吳玉寒」,開始位置 2 代表從第 2 個字元開始,取代字元數 1 代表只取代 1 個字元,新文字是 "X"。所以「玉」被換成 X,前後的「吳」與「寒」不動。比起前兩種寫法,REPLACE 的公式最短,也不必另外建立輔助欄位,是三種做法中最簡潔的一種。
和 REPLACE 容易搭配討論的是 SUBSTITUTE 函數。REPLACE 依照字元所在的位置取代,SUBSTITUTE 則依照指定的文字內容取代。以 ABCABC 為例,=REPLACE("ABCABC",2,1,"X") 會得到 AXCABC,只有第 2 個字元被換掉;=SUBSTITUTE("ABCABC","B","X") 則會得到 AXCAXC,所有的 B 都被換成 X。因此,知道要改第幾個字元時使用 REPLACE,知道要換掉哪一段內容時使用 SUBSTITUTE,姓名遮蔽比較適合前者,而統一產品編號裡的特殊符號則比較適合後者。SUBSTITUTE 在這份資料表中沒有實際操作,這裡是補充的延伸知識。
REPLACE 的限制,和第三節是同一類問題:它只會取代固定位置上的固定字數,不會判斷姓名的結構。資料表裡全部是三字姓名,所以替換第 2 個字剛好合適;如果遇到「歐陽小明」這樣的四字姓名,同一個公式只會得到「歐X小明」,名字的其餘部分並沒有被遮蔽,複姓也不會被自動辨識。所以,REPLACE 適合用來示範「指定位置的文字取代」,但要處理各種長度的姓名,仍然需要先依姓名字數調整參數。
五、員工薪資異常檢查:Excel 自訂格式條件判斷
前面幾節整理的是編號與姓名,這一節換成薪資數值。這張資料表的 E 欄「薪資」,贊贊小屋先用 ROW 函數產生測試資料,在 E9 看得到的公式是 =(ROW()-2)*10000+30000。ROW() 會傳回目前所在的列號,第 3 列的結果是 1,所以薪資是 40,000,往下每多一列就增加 10,000,到第 12 列是 130,000,整欄從 40,000 一路排到 130,000。
接著開啟「設定儲存格格式」視窗,在「自訂」類別的「類型」欄位輸入 [>99999]"異常";#,##0。「範例」欄位已經直接顯示「異常」。套用之後,第 3 列到第 8 列仍然顯示 40,000 到 90,000 的千分位金額,從第 9 列開始,也就是數值達到 100,000 之後,儲存格不再顯示金額,而是顯示「異常」。
很多人以為自訂格式只能用來加千分位、貨幣符號或補零,其實它也可以帶條件。[>99999] 的意思是當數值大於 99999 時,採用後面緊接的顯示方式,也就是固定輸出文字「異常」;分號後面的 #,##0 則是其他數值的顯示方式,也就是一般的千分位格式。這樣的寫法不需要額外增加公式欄位,就能做出簡單的條件顯示,其他常用的格式碼寫法可以延伸閱讀 Excel 自訂格式代碼。
不過,自訂格式與 IF 函數的差別必須分清楚。自訂格式只改變畫面,儲存格裡仍然是原本的數值,所以 E9 雖然顯示「異常」,實際上還是 100000,=SUM(E3:E12) 仍然會把它加進去,不會因為畫面顯示「異常」就被排除,這在財務報表上相當重要。IF 函數則是另外產生一個結果,可以被其他公式引用,適合處理需要進一步運算的邏輯判斷;自訂格式比較適合畫面提示與報表呈現,其他公式也無法直接取得畫面上顯示的「異常」。
另外,「異常」的提示並不等於資料驗證。它只會讓使用者看到提醒,並沒有阻止任何人輸入不合理的薪資。如果希望限制輸入的範圍,要使用「資料驗證」;如果希望超過上限的儲存格自動變色,則可以使用「設定格式化的條件」;自訂格式則專門負責控制數值的顯示方式,三種工具的分工並不相同。最後也要提醒,99999 只是這個範例設定的門檻,超過這個數字不代表薪資真的有問題,不能當成判斷薪資是否合理的標準。
六、員工手機號碼格式:前導零、連字號與異常顯示
這一組範例把前面兩種技巧合在一起:用第二節的自訂格式補零,同時加上第五節的條件判斷。這一次 F 欄「手機」存放的是數值,贊贊小屋開啟「設定儲存格格式」視窗,在「自訂」類別輸入 [>999999999]"異常";0000-000-000。前半段的意思是數值大於 999999999 時顯示「異常」,後半段則把其他數值顯示成 4 碼、3 碼、3 碼的手機號碼樣式。
以 F11 為例,編輯列顯示的實際儲存值是 999999999,視窗的「範例」顯示 0999-999-999,也就是剛好達到上限而仍然正常顯示的資料。F3 到 F10 同樣被格式化成 0912-345-678、0999-999-997 這類樣式;最下方的 F12 因為超過上限,畫面上顯示的是「異常」。
這個設定為什麼能讓手機號碼顯示出最前面的 0,需要補充一個原理。在一般數值格式的儲存格中直接輸入 0912345678,Excel 通常會把最前面的 0 移除,實際儲存成 912345678;套用 0000-000-000 之後,Excel 只是在畫面上把缺少的 0 補出來,並沒有把 0 寫回儲存值。這會影響下一節的 LEN 檢查:連字號與前導零都不在儲存值裡,所以 LEN 計算的是 9,而不是畫面上的 12 個字元。
格式也有它的限制。它只能檢查數值有沒有超過上限,沒辦法判斷這是不是一組正確的手機號碼。像下一節會看到的 123456,套用同樣的格式後,一樣會顯示成 0000-123-456,看起來有 4 碼、3 碼、3 碼,卻不是一組合理的手機號碼。因此,只看畫面上的外觀,無法確認資料是否正確,仍然要搭配第七節的 LEN 與 IF,檢查實際的長度與數值範圍。
再往外延伸,手機號碼本質上是識別碼,而且可能涉及不同國家與國際電話格式。台灣常見的手機號碼以 09 開頭,但其他國家的長度與格式並不相同;完整的號碼有時還需要加上國碼 +886,若全部以數值儲存,就很難保留 + 這類符號。所以,這一節的做法很適合示範 Excel 的格式設定,但在正式的資料庫、客戶管理或名單匯入匯出時,最好先定義好統一的文字格式。
七、員工手機號碼檢查:LEN 與 IF 函數
這份員工資料表的 F 欄是「手機」,第 3 列到第 12 列共有 10 筆資料。贊贊小屋先在 H 欄「LEN 函數」的 H3 輸入 =LEN(F3),計算手機號碼的長度,再到 I 欄「IF 函數」的 I3 輸入 =IF(OR(H3<>9,F3>999999999),"異常",""):只要長度不是 9,或是數值大於 999999999,就顯示「異常」,其他情況則留白。
結果有一個很值得注意的地方。第 3 列的手機顯示成 0000-123-456,LEN 算出來卻只有 6,I3 因此顯示「異常」;第 4 列到第 11 列,例如 0876-543-210、0912-347-000,LEN 都是 9,I 欄維持空白;第 12 列的手機欄直接顯示「異常」,LEN 的結果是 10,I12 同樣顯示「異常」。同樣是看起來十位數的電話,為什麼正常的資料只算出 9?
答案在於 Excel 的「儲存值」與「顯示結果」可以不一樣。這一欄的手機號碼是以數值儲存,再透過第六節的自訂格式補上最前面的 0 與連字號,所以 0912-347-000 實際儲存的是 912347000,剛好 9 位數;第 3 列實際儲存的是 123456,只有 6 位數,雖然畫面上被格式補成 0000-123-456,LEN 函數計算的仍是儲存值轉成文字後的字元,不會把格式補出來的 0 和連字號算進去。這也是為什麼公式裡的判斷標準是 9,而不是畫面上看起來的 12 個字元。如果這一欄原本存的是文字 0000-123-456,LEN 會把連字號一起算進去而得到 12,結果就完全不同。
IF 與 OR 的組合則負責把檢查條件寫成規則。OR 的邏輯是只要有一個條件成立就成立,所以 H3<>9 與 F3>999999999 任何一個成立,IF 就會顯示「異常」;如果換成 AND,則必須兩個條件同時成立才會顯示,適合用在需要全部符合才算通過或不通過的審核情境。公式裡的 <> 代表「不等於」,這個寫法在資料檢查中很常用到。
不過,這個做法有明確的適用範圍。公式是針對「以數值儲存的手機欄位」設計的,LEN 的標準 9 與 F3>999999999 的上限,都是以去掉最前面 0 的數值為前提,若直接套用到已經含有連字號的文字資料,判斷結果就會全部錯位。另一方面,手機號碼是識別資料,不是拿來加減乘除的數量,台灣手機號碼又通常以 09 開頭,數值儲存很容易遺失最前面的 0,實務上更適合用文字儲存;Excel 如何在儲存格保留開頭 0,可以延伸閱讀 Excel 開頭 0 顯示。這一節的作法適合示範「數值資料如何檢查長度與異常」,正式的客戶或員工資料還需要另外檢查是否符合手機號碼規則。
員工資料建檔的 Excel 應用重點
回頭看這 7 組範例,真正貫穿全文的不是哪一個函數,而是三種不同的資料狀態:原始資料、公式處理結果,以及顯示格式。第六節的手機格式與第七節的手機號碼檢查,說明畫面上看到的內容不一定就是儲存的內容;第一節與第二節的編號補零,說明同樣顯示 0001,文字與數值在後續使用上並不相同;第三節與第四節的姓名遮蔽,說明公式產生的是一份新的結果,原本的姓名並沒有因此消失;第五節則說明,「異常」可以只是畫面上的提示,原本的數值仍然參與計算。
因此,員工資料建檔時,建議先分清楚每一欄現在處理的是哪一種狀態:原始資料就保持原樣,要轉換或遮蔽時用公式另外產生結果,只需要改善閱讀方式時,再使用自訂格式。三者分開之後,才知道哪些資料可以拿去排序與運算,哪些資料適合匯出,哪些畫面上的提示還需要另外檢查。公式也不是一套就適用所有情況,補零的位數、姓名的字數、薪資的門檻與手機號碼的規則,都要依自己的資料調整,這樣整理出來的員工資料才經得起後續的使用。
