日期格式轉換|民國轉西元、西元轉民國,3種方法一次學會

嘿,第十篇文章我們來處理台灣 Excel 使用者最頭痛的問題——日期轉換

在台灣工作,你一定遇過這種狀況:

    • 政府文件、勞健保表單都用「民國年」,但 Excel 只認「西元年」
    • 從系統匯出的日期是「112/3/19」,沒辦法直接計算
    • 要做年資統計,但兩種年份混在一起,根本無法比較

今天教你3種方法,快速搞定民國轉西元西元轉民國日期轉換一次學會!


先搞清楚:民國年和西元年差在哪?

民國年 = 西元年 – 1911

例如:

  • 西元 2026 年 → 民國 115 年(2026 – 1911 = 115)
  • 民國 112 年 → 西元 2023 年(112 + 1911 = 2023)

這個換算邏輯是所有方法的基礎,先記起來!

案例:員工到職日

假設你有一張員工資料表,日期格式亂成一團:

員工編號 姓名 到職日(民國) 到職日(西元)
A001 王小明 112/3/15
A002 李小華 111/8/20
A003 張美美 110/11/5
A004 陳大文 113/1/10
A005 林小君 109/6/30

我們的目標:把「到職日(民國)」欄位,全部轉成西元,才能做年資計算。

民國轉西元原始資料範例

△ 圖1:民國年需要進行轉換

方法一:儲存格格式設定(最快、不改變原始值)

如果只是「顯示」要改成西元年,資料本身不想動,用這個方法。

步驟:

  1. 選取要轉換的日期欄位(C2:C6)
  2. 按右鍵 →「儲存格格式」
  3. 點選「數值」→「自訂」
  4. 在「類型」框中輸入:yyyy/mm/dd
  5. 按下確定

完成後,原本輸入的「112/3/15」會直接顯示為「2023/3/15」!

原理: Excel 其實還是儲存原本的民國年,只是「看起來」變成西元年。這種方式最安全,不會影響原始資料。

⚠️ 注意: 如果您的民國年格式是「112/3/15」這種文字,Excel 可能會把它當成「文字」而不是「日期」,這時直接設定儲存格格式可能不會生效。

解決方法:先用方法二或方法三把文字轉成真正的日期,再用這個方法設定顯示格式。

儲存格格式設定

△ 圖2:用儲存格格式設定,快速改變日期顯示方式

微軟官方有詳細的日期設定教學 [微軟:設定以日期或時間顯示數字的格式]

方法二:用 DATE 公式轉換(最準確)

如果你想要「真的」把民國年轉成西元年,讓它可以計算、排序,就用這個公式。

D2 輸入:

=DATE(LEFT(C2,3)+1911, MID(C2,5,2), RIGHT(C2,2))

然後把公式往下拉,就會得到正確的西元日期。

公式解說:

  • LEFT(C2,3):抓出民國年(112)
  • +1911:轉成西元年(2023)
  • MID(C2,5,2):抓出月份(3月會變成「03」)
  • RIGHT(C2,2):抓出日期(15)
  • DATE(...):組合成真正的西元日期

結果:

員工編號 姓名 到職日(民國) 到職日(西元)
A001 王小明 112/3/15 2023/3/15
A002 李小華 111/8/20 2022/8/20
A003 張美美 110/11/5 2021/11/5
A004 陳大文 113/1/10 2024/1/10
A005 林小君 109/6/30 2020/6/30

⚠️ 注意: 這個公式適合「112/03/15」這種「3位數/2位數/2位數」的格式。

如果您的資料是「112/3/15」(月份沒有補零),公式會把「3」誤判成「03」,導致月份錯誤。

解決方法: 先用「方法三」的公式,或先用儲存格格式把民國年改成「000/00/00」的顯示方式,讓月份和日期都變成2位數,再用這個公式轉換。

DATE函數轉換

△ 圖3:用 DATE 函數把民國年轉成真正的西元日期

微軟官方有 DATE 函數的詳細教學 [微軟:DATE 函數]

方法三:萬用 DATE 公式(不用補零,適用所有格式)

這個方法用 FIND 函數動態找出斜線位置,不管你的月份是1位數還是2位數,都能正確轉換!

D2 輸入:

=TEXT(DATE(LEFT(C2,3)+1911, 
           MID(C2,FIND("/",C2)+1, 
               FIND("/",C2,FIND("/",C2)+1)-FIND("/",C2)-1), 
           RIGHT(C2,2)), 
     "yyyy/mm/dd")

(公式可以複製貼上,不用自己換行)

🔍 公式一步一步解說

步驟 公式部分 說明 範例結果
LEFT(C2,3)+1911 抓出民國年,轉成西元年 112 → 2023
FIND("/",C2) 找出第一個斜線的位置 4
FIND("/",C2, FIND("/",C2)+1) 找出第二個斜線的位置 6
MID(C2, 第一個斜線+1, 第二個斜線-第一個斜線-1) 抓出兩個斜線中間的月份 3
RIGHT(C2,2) 抓出最後的日期 15
DATE(...) + TEXT(...,"yyyy/mm/dd") 組合成西元日期並格式化 2023/03/15

📊 實際轉換結果

員工編號 姓名 到職日(民國) 到職日(西元)
A001 王小明 112/3/15 2023/03/15
A002 李小華 111/8/20 2022/08/20
A003 張美美 110/11/5 2021/11/05
A004 陳大文 113/1/10 2024/01/10
A005 林小君 109/6/30 2020/06/30

✅ 這個方法的三大優點:

  • 萬用:不管月份是1位數還是2位數,通通適用
  • 不用先補零:原始資料長怎樣都能轉
  • 最穩定:用 FIND 動態找位置,不會出錯

微軟官方有相關函數的教學:

西元轉民國:反過來的做法

有時候拿到的是西元年,但政府表單要填民國年,就要做反向轉換

⚠️ 重要觀念: Excel 中的日期是「序列數字」(例如 2023/3/15 在 Excel 內部是 45000 之類的數字),千萬不能直接用 D2-1911,這樣會得到完全錯誤的結果!

正確的做法是先用 YEAR 函數取出「西元年」,再減去 1911。

① 只轉「民國年數」(例如:112)

如果你只要民國年(例如要做年資計算),用這個:

=YEAR(D2)-1911

結果:2023 → 112

② 轉成「3位數民國年」(例如:112)

如果要顯示成 3 位數(讓數字整整齊齊):

=TEXT(YEAR(D2)-1911,"000")

結果:112 → 112(3位數,前面不會有空格)

③ 直接轉成「民國年完整日期」(最實用)

西元年 2023/3/15 → 民國年 112/03/15

=TEXT(YEAR(D2)-1911,"000")&"/"&TEXT(D2,"mm/dd")
西元日期 民國日期
2023/3/15 112/03/15
2022/8/20 111/08/20
2024/1/10 113/01/10

④ 最簡單:Excel 內建民國格式(一行搞定)

Excel 其實有內建台灣的民國年格式,用這個最簡單、最專業:

=TEXT(D2,"[$-zh-TW]yy/mm/dd")

[$-zh-TW] 是告訴 Excel:「請用台灣地區的格式顯示」,它會自動把西元年轉成民國年。

✅ 為什麼這個方法最好?

  • 最簡潔:不用拆年、月、日,不用組合
  • 最準確:Excel 內建格式,自動處理閏年、月份天數
  • 最台灣:專門為台灣使用者設計的格式代碼

📊 四種方法比較表

方法 公式 結果 適合時機
=YEAR(D2)-1911 112 只要年分做計算
=TEXT(YEAR(D2)-1911,"000") 112 年分要固定3位數
=TEXT(YEAR(D2)-1911,"000")&"/"&TEXT(D2,"mm/dd") 112/03/15 要完整民國日期
④ 最推薦 =TEXT(D2,"[$-zh-TW]yy/mm/dd") 112/03/15 一行搞定,最簡單

下一篇預告:加班費計算公式

學會日期轉換後,下一篇要處理台灣上班族最關心的——加班費計算

👉 「加班費計算公式|勞基法平日/休息日/例假日加班費怎麼算?」,敬請期待!


📚 延伸閱讀

💡 學 Excel 真的不難,來這裡,學就好。―― 小就