從別的系統匯出來的資料,常常有「看起來是數字,其實是文字」的格子,加總是 0、排序亂掉、日期不能加減。今天整理三個把文字轉回來的函式,VALUE、DATEVALUE、TIMEVALUE。
這三個函式在別篇都順帶出現過,這篇把它們各自放在一個段落,方便直接查語法和結果。我自己最常用的是 VALUE,DATEVALUE 偶爾,TIMEVALUE 只有處理打卡紀錄的時候才會碰。
怎麼選
先搞清楚手上的格子是文字還是真的數字。數字和日期預設靠右、文字預設靠左,更確定的是用 ISNUMBER 問:,文字會得到 FALSE。為什麼同樣的「100」會有文字和數字兩種,在 儲存格的值與顯示格式 有講。
| 手上的文字 | 用哪個 | 得到的是 |
|---|---|---|
| 「1,665」「37%」 | VALUE | 數字 |
| 「2026/10/11」 | DATEVALUE | 日期序號 |
| 「14:35:48」 | TIMEVALUE | 0 到 1 的小數 |
如果手上已經是數字,只是想換成日期、貨幣、百分比的樣子,那是 TO_DATE、TO_DOLLARS、TO_PERCENT 這一組,不在這篇,看 TO_ 系列函式。要把數字轉成「文字」則是 TO_TEXT 或 TEXT,同一篇和 TEXT 格式碼進階 有講。
文字轉數字
VALUE
VALUE 把試算表認得的數字、日期、時間文字轉成數字。
語法:
- 文字:要轉換的字串,直接打要加雙引號,也可以參照儲存格。
我想把「1,665」和「280」這兩段文字加起來,如果要用 VALUE 寫,就是:
兩段文字數字轉成數字再相加
=VALUE("1,665")+VALUE("280")先手算:1665 加 280 是 1945。來看看結果:
| 公式 | 結果 |
|---|---|
| 1665 | |
| 0.37 | |
| 46306 | |
| 1945 |
千分位逗號會被認得,百分比會變成小數,連日期文字也能轉,結果是日期的序號。序號是從 1899/12/30 起算的天數,2026/10/11 是第 46306 天,這個在 日期與時間入門 有講。
注意事項:
- 試算表認不得的字串會得到
#VALUE!,像 ,後面的「元」轉不了。要先把單位拿掉,做法在 文字清理函式。 - 看起來完全正常卻轉不了的,多半藏著不可見的字元,也是先清理再轉。例如尾端多了一個不換行空格(
CHAR(160)),VALUE就會是#VALUE!,要先用SUBSTITUTE換掉。 - 貨幣符號跟著試算表的地區設定走:地區設定為台灣時, 得到 1200,單純的
$1,200反而是#VALUE!。 - 大量資料的話,可以用
ARRAYFORMULA包起來一次轉整欄。
文字轉日期與時間
DATEVALUE
DATEVALUE 把「看起來像日期」的文字轉成日期序號,轉完才能加減和比較。
語法:
- 日期字串:試算表認得的日期格式,要加雙引號,或參照一個文字儲存格。
我想把文字日期「2026/09/28」往後推 30 天,結果轉成「yyyy/mm/dd」的樣子顯示:
文字日期加 30 天,再格式化顯示
=TEXT(DATEVALUE("2026/09/28")+30, "yyyy/mm/dd")9 月 28 日再過 30 天是 10 月 28 日。來看看結果:
| 公式 | 結果 |
|---|---|
| 46306 | |
| 46297 | |
| 2026/10/28 |
斜線和連字號的寫法都認得。DATEVALUE 直接回傳的是序號,要看到日期的樣子,把儲存格的格式設成日期,或像上面用 TEXT 包起來,不過包了 TEXT 之後它又變成文字了,不能再拿去算。
注意事項:
- 「20261011」這種連在一起的八位數字不認得,會得到
#VALUE!。要用LEFT、MID、RIGHT拆開,再用DATE組起來。 - 民國年也不要直接丟進去。「115/10/11」這種寫法,我是用
DATE自己組:,得到 2026/10/11。 - 同一件事要小心的是,
DATE的年份填 0 到 1899 會自動加上 1900,所以 是 2015/10/11,不是民國 115 年。一定要先加 1911。 - 「10/11/2026」這類月日順序不明確的寫法,要看試算表的語言與地區設定,不同設定會有不同解讀。例如地區設定為台灣時, 會被當成「日/月/年」,得到 2026/11/10,不是 10 月 11 日。我寧願資料先整理成年月日再轉。
TIMEVALUE
TIMEVALUE 把「看起來像時間」的文字轉成一天的分數。
語法:
- 時間字串:像
"14:35:48"這樣的時間文字,要加雙引號,或參照一個文字儲存格。
我想知道文字時間「14:35:48」到底是一天的多少:
文字時間轉成一天的分數
=TIMEVALUE("14:35:48")先手算:14 小時 35 分 48 秒是 52548 秒,一天有 86400 秒,52548 除以 86400 約 0.608194。來看看結果:
| 公式 | 結果 |
|---|---|
| 0.5 | |
| 0.75 | |
| 0.608194 |
中午 12 點剛好過了半天,傍晚 6 點是四分之三天。
轉成分數之後,兩個文字時間就能相減。我想算上班 09:15、下班 18:40 差幾個小時,乘 24 換成小時,再取到小數第 2 位:
兩個文字時間相減,換成小時
=ROUND((TIMEVALUE("18:40")-TIMEVALUE("09:15"))*24, 2)| 公式 | 結果 |
|---|---|
| 09:15 到 18:40 | 9.42 |
565 分鐘是 9 小時 25 分,也就是 9.4167 小時,取到小數第 2 位是 9.42。換成分鐘要乘 1440,換成秒要乘 86400。整份打卡紀錄怎麼算工時、跨午夜怎麼辦,在 時間函式整理。
動手練習
文字日期加 45 天
有一格文字日期「2026/09/28」,我想知道 45 天之後是幾月幾日,結果要顯示成 yyyy/mm/dd 的樣子。請寫出公式。
下次拿到匯出的檔案,先用 ISNUMBER 看一眼是文字還是數字,再決定要用哪一個吧!我是喜特先生,Mr. Sheet,我們下個教學見!
接下來可以
相關文章
查看所有文章留言討論
共 0 則留言
