Excel 日期格式轉換成 yyyymmdd(例如 2026/10/1 變成 20261001)時,只想改變畫面顯示,用自訂格式 yyyymmdd 就夠;要拿到真正的八碼文字,才用 YEAR、MONTH、DAY 搭配 TEXT 補零。這篇用贊贊小屋的實測,整理兩種做法的差別與選擇。
一、Excel 日期如何拆成年、月、日
要把日期整理成固定的八碼,第一步通常是先把年、月、日各自拆出來。
YEAR、MONTH、DAY 函數分別取得年月日
贊贊小屋在 A 欄的「西元日期」放了三筆日期:2026/10/30、2026/10/1、2026/9/30。B 欄、C 欄、D 欄分別用 YEAR、MONTH、DAY 三個函數,把同一列日期的年、月、日各拆成一格。以 2026/10/1 這一列為例,D4 輸入的公式是 =DAY(A4),B4、C4 則是同樣寫法的 =YEAR(A4) 與 =MONTH(A4)。
三筆日期拆出來的結果依序是:2026、10、30;2026、10、1;2026、9、30。年份固定是四位數,月份和日期則是什麼數字就顯示什麼數字。
YEAR、MONTH、DAY 取得的是數值
這裡要先留意一件事:YEAR、MONTH、DAY 傳回的是數值,不是兩位數的文字。10 月得到 10,1 日得到的是 1,不是 01。
日期原本在 A 欄看起來是 2026/10/1,並不代表 DAY 會自動替 1 保留兩位數;它只回答「這是這個月的第幾天」,答案就是數字 1。9 月也是同樣的道理,MONTH 得到的是 9,而不是 09。接下來要把三個數字合起來時,這個差別會直接影響結果。
二、直接合併年月日,為什麼少了一個 0
年、月、日都拆好了,最直覺的做法,就是用 & 把三格內容接在一起,期待得到 yyyymmdd。贊贊小屋先照這個直覺做了一次。
使用 & 串接 YEAR、MONTH、DAY
贊贊小屋在 E 欄的「合併」輸入 =B4&C4&D4,把 2026 的年、10 的月、1 的日直接接起來。E4 得到的是 2026101,不是預期的 20261001,只有七位數。同一欄的 E3 是 20261030,看起來正常,E5 則是 2026930。
三筆資料的結果長度不一樣:2026/10/30 是八碼,2026/10/1 與 2026/9/30 都只有七碼。
月份和日期不足兩位時會產生問題
問題出在個位數的月份與日期。& 只負責把前面三格的內容照原樣接起來,不會自己補 0。2026/10/30 的月、日剛好都是兩位數,所以接起來碰巧是八碼;2026/10/1 的日只有一位,2026/9/30 的月只有一位,各少一位,接出來的結果就變成 2026101 與 2026930。
這樣的結果沒辦法形成固定八碼的 yyyymmdd,也無法分辨 2026101 究竟是 10 月 1 日,還是 1 月 01 日。想要固定位數,就得在合併之前,先把月和日補成兩位數。
三、用 TEXT 函數將月份和日期補成兩位數
補 0 的工具是 TEXT 函數。它的用法很簡單,但它做的事情,和 Excel 儲存格格式裡的「00」其實不一樣。
TEXT 的 "00" 可以補前導 0
贊贊小屋把 E 欄的公式改成 =B4&TEXT(C4,"00")&TEXT(D4,"00"),也就是先用 TEXT(C4,"00") 把月份補成兩位,再用 TEXT(D4,"00") 把日期補成兩位,最後和年份接在一起。TEXT 的第二個引數 "00" 表示「至少要兩位,不足的前面補 0」,所以 9 變成 09,1 變成 01。
三筆資料這次得到的是 20261030、20261001、20260930,全部是固定的八碼。
TEXT 不只是改變畫面格式
這裡有一個贊贊小屋實測時才發現的差別。原本的印象是,如果把儲存格格式設成「00」,只會讓數字看起來是兩位數,實際內容並沒有改變:儲存格裡的 1,顯示成 01,真正的值還是 1。這個印象本身沒有錯。
但改用 TEXT 補成兩位數、再把結果合併起來之後,贊贊小屋發現合併後的結果真的就是兩位數的內容,不再只是外觀。原因是兩者做的事情不同:儲存格自訂格式 00 只改變數字的顯示方式,值仍然是 1;=TEXT(1,"00") 則是真正產生一個文字 "01"。TEXT 把原本只是「顯示效果」的前導 0,變成了字串本身的一部分,所以接在一起才會成為真正的 20261001。
四、TEXT 轉換後的 20261001 已經是文字
既然 TEXT 產生的是文字,那麼 E 欄那一排看起來像日期的 20261001,實際上還是不是日期?用 Excel 自己的篩選功能就能確認。
外觀看起來像日期,不代表仍然是日期
用 TEXT 得到的 20261001,畫面上看起來很像日期,但它的資料型態已經是文字。TEXT 函數的輸出本來就是文字,不管是前面的合併公式,還是直接寫成 =TEXT(A4,"yyyymmdd"),得到的 20261001 都是這一類結果。
單看儲存格內容,很難分辨一串數字樣子的資料到底是日期、數字還是文字。比較可靠的方式,是讓 Excel 自己告訴我們它怎麼看待這一欄。
從 Excel 篩選功能可以直接看出差異
贊贊小屋先對原始的日期欄位開啟篩選。選單裡出現的是「日期篩選」,下方的清單依「2026年」分組,展開後有「九月」與「十月」兩個月份節點,Excel 把這三筆資料當成日期,所以能依年、月自動分層。
接著對 TEXT 函數結果的那一欄開啟篩選。這次選單裡的選項變成「文字篩選」,清單也不再分年月,而是直接列出 20260930、20261001、20261030 三個項目;排序選項顯示的是「從 A 到 Z 排序」與「從 Z 到 A 排序」,和日期欄位選單裡的排序文字不同。
兩個篩選選單放在一起比較,差異很清楚:原始的 2026/10/1 是日期,TEXT 轉成的 20261001 雖然仍代表同一個年月日,Excel 卻把它視為文字。文字型態會改變篩選器判斷資料的方式,這一點在 Excel 開頭 0 顯示那篇用發票號碼與開票日期也有實例。
五、日期轉成文字之後會有哪些影響
知道 TEXT 的結果是文字之後,下一個問題是:什麼時候可以放心用它,什麼時候不能只留下它?
TEXT 適合輸出固定格式的日期字串
如果真正需要的是固定的八碼文字,TEXT 的結果就很合適。例如檔案名稱要帶日期、資料要匯出給其他系統、要組成某種系統代碼或編號,或是要和其他文字串接在一起,這些情境需要的是一串固定長度的字串,而不是可以計算的日期值。
這時用 TEXT 一次輸出 20261001,比在後面一個一個手動補 0 更穩定。
如果後續還要計算日期,不宜只留下 TEXT 結果
反過來,如果後面還要用這些日期做事,就不要只留下 TEXT 的結果。轉成文字之後,資料就失去了日期值原有的功能:沒辦法再用日期篩選依年月分層,加減天數也不會得到正確的日期,YEAR、MONTH、DAY 也無法再從 20261001 正確拆出年月日,依年月群組也做不到。如果手上已經是 20261001 這種八碼文字,想轉回真正的日期,可以參考 Excel 8位數字轉日期。
比較穩妥的做法,是保留原始的日期欄位,把 TEXT 的結果放在另一欄專門輸出使用。需要計算時回到日期欄,需要八碼字串時才看 TEXT 欄,兩邊各司其職。
六、不用 TEXT,直接把日期顯示成 yyyymmdd
如果目的只是讓畫面上看到 20261001,其實不一定要建立 TEXT 公式。Excel 的自訂儲存格格式就能做到,而且不會改變資料本身。
使用 Excel 自訂儲存格格式
贊贊小屋在 B 欄放入 =A4 這類公式,直接取得 A 欄的日期值;A 欄的標題是 yyyy/m/d,B 欄的標題是 yyyymmdd。接著開啟「設定儲存格格式」視窗,在「數值」頁籤的類別選「自訂」,在「類型」欄位輸入 yyyymmdd。視窗上方「範例」欄位馬上顯示 20261001,確認格式碼寫對了;視窗下方的提示是「請鍵入數值格式代碼,您可以選取已有的代碼加以修改。」
套用之後,B 欄三筆資料顯示成 20261030、20261001、20260930,不需要再寫任何 TEXT 公式。自訂格式能控制的不只日期,數值的顯示方式也一樣,進一步的寫法可以參考 Excel自訂格式代碼。
自訂格式只改變外觀,不改變真正的日期值
不過這時候 B 欄儲存格裡的內容,仍然是原本的日期值,只是顯示的樣子變成了 yyyymmdd。想確認這一點,同樣可以打開篩選。
贊贊小屋對 B 欄開啟篩選,選單出現的還是「日期篩選」,清單依「2026年」分組,下面一樣有「九月」與「十月」,排序選項顯示的是「從最新到最舊排序」,是日期欄位選單裡的排序文字。畫面上看到的是 20261001,Excel 認得的卻仍是 2026 年 10 月 1 日的日期。
這就是和前面 TEXT 結果最大的不同:自訂格式只換外觀,日期的篩選、排序、加減天數,以及 YEAR、MONTH、DAY 都還保留得住。
TEXT 和自訂格式 yyyymmdd 應該怎麼選
回頭看前面所有的實測,TEXT 與自訂格式其實都能讓畫面顯示 20261001,真正的差別在於結果是什麼:一個是文字,一個仍然是日期。選哪一種,取決於這份資料接下來要拿來做什麼。
只想改變日期顯示方式:使用自訂格式
如果只是希望把 2026/10/1 顯示成 20261001,但後面還要做日期計算、日期篩選、日期排序,或是還要用 YEAR、MONTH、DAY 取出年月日,就用 yyyymmdd 自訂格式。資料本身沒有動,Excel 仍然把它當日期,只是換了一種看起來的樣子。
真的需要八碼文字:使用 TEXT
如果真正需要的是字串 "20261001",例如要帶進檔名、匯出或當作編號,就用 =TEXT(A4,"yyyymmdd"),或是前面一步一步實測出來的 =YEAR(A4)&TEXT(MONTH(A4),"00")&TEXT(DAY(A4),"00")。兩種寫法得到的都是八碼文字。這裡用的格式碼 yyyymmdd,是在贊贊小屋使用的繁體中文版 Excel 上實測的寫法。
用表格對照三種方法的畫面結果與真正資料
| 方法 | 畫面結果 | 真正資料 |
|---|---|---|
| 自訂格式 yyyymmdd | 20261001 | 日期 |
TEXT(A4,"yyyymmdd") |
20261001 | 文字 |
YEAR+MONTH+DAY+TEXT |
20261001 | 文字 |
三種方法畫面上都是 20261001,但只有自訂格式保留了真正的日期值。所以如果只是想把 Excel 日期「顯示」成 yyyymmdd,使用自訂格式最簡單;如果要取得真正的八碼文字,再使用 TEXT。先確認自己要的是顯示效果,還是文字結果,再決定用哪一種,後面就不會被資料型態的差異絆倒。

