今天把文字函式裡比較冷門的一批收在一起:CODE、UNICHAR、ASC、EXACT、REPT、T、DOLLAR、FIXED、ROMAN 和 ARABIC。
這些函式我平常用的次數都不多,但每個大概一年會遇到一兩次,像是用 REPT 在儲存格裡畫簡單的長條圖、用 EXACT 查兩欄「看起來一樣」但其實差一個大小寫的資料。這篇當作工具書,需要的時候回來查。
TRIM、CLEAN、SUBSTITUTE 這類清理函式,以及 CHAR、UNICODE,請看 文字清理函式參考。TEXT 的格式碼請看 文字格式碼進階。
怎麼選
| 想做的事 | 用哪個 | 傳回 |
|---|---|---|
| 查一個字的編碼 | CODE | 數字 |
| 由編碼得到字元 | UNICHAR | 文字 |
| 全形英數轉半形 | ASC | 文字 |
| 區分大小寫地比對 | EXACT | TRUE 或 FALSE |
| 重複一段文字 | REPT | 文字 |
| 只留下文字、其他變空白 | T | 文字 |
| 數字轉成貨幣格式文字 | DOLLAR | 文字 |
| 數字轉成千分位文字 | FIXED | 文字 |
| 數字與羅馬數字互換 | ROMAN、ARABIC | 文字、數字 |
字元與編碼
CODE
回傳文字第一個字元的 Unicode 編碼。
語法:
A 的編碼
=CODE("A")大寫 A 是 65,結果就是 65!如果文字有好幾個字,只看第一個,所以 一樣是 65。
中文字也行, 會得到 33590,這是 Unicode 的 U+8336。
UNICHAR
由 Unicode 編碼得到字元,是 CODE 的反向。
語法:
編碼 33590 對應的字
=UNICHAR(33590)結果是「茶」。如果是符號的話, 會得到「★」,做評分欄位的時候很好用,下面的 REPT 會再用到。
ASC
把全形的英文字母、數字和符號轉成半形。
語法:
全形轉半形
=ASC("Tea12")結果是 Tea12。我比較常在比對訂單編號、商品代碼時用到,同一筆資料有人用全形輸入,兩邊看起來一樣但就是對不上,先用 ASC 轉過再比對。
中文字本身沒有全形半形之分,不會有變化。日文全形片假名也會轉成半形(アイウ 變成 アイウ),已經是半形的則維持原樣。
比對與重複
EXACT
比較兩段文字是否完全相同,區分大小寫,包含空格。
語法:
Tea 與 tea 是否相同
=EXACT("Tea", "tea")結果是 FALSE。如果用 比較,結果會是 TRUE,因為等號不分大小寫。
空格也會被算進去, 同樣是 FALSE。比對看起來一樣卻回 FALSE 的時候,先檢查是不是有多餘的空格,再用 TRIM 清掉。
REPT
把一段文字重複指定的次數。
語法:
來做個簡單的長條圖。A 欄是品項,B 欄是銷量,每 5 杯畫一格,所以格數是銷量除以 5 再四捨五入:
依銷量畫文字長條
=REPT("█", ROUND(B2 / 5))資料是:
| 品項 | 銷量 | 長條 |
|---|---|---|
| 蘋果紅茶 | 37 | ███████ |
| 青茶 | 12 | ██ |
| 烏龍茶 | 25 | █████ |
37 ÷ 5 = 7.4,四捨五入是 7;12 ÷ 5 = 2.4,是 2;25 ÷ 5 = 5。次數有小數的時候,REPT 會直接捨去小數(2.9 次當成 2 次),負數則會出現 #VALUE!,所以我都先用 ROUND 處理,四捨五入的結果比較符合直覺。
T
如果值是文字就傳回它,否則傳回空白。
語法:
T 對文字與數字的差別
=T("蘋果紅茶")文字會原樣傳回「蘋果紅茶」,而 傳回空白,布林值 也是空白。
坦白說,我還沒遇過非用 T 不可的情況。它的用途是從一格裡只撈出文字,數字就不要,例如一欄裡文字與數字混雜時,濾掉數字的做法。
數字轉格式化文字
這兩個函式傳回的是文字,不是數字,不能直接拿去加總。要算數字的時候,保留原始數字,另開一欄放格式化後的結果。
DOLLAR
把數字轉成貨幣格式的文字。
語法:
- 小數位數:選填,預設 2。
1234.567 轉貨幣格式,2 位小數
=DOLLAR(1234.567, 2)地區設定為台灣時,結果是 NT$1,234.57;小數位數填 0 的 為 NT$1,235。
貨幣符號跟著試算表的地區設定走,其他地區的符號不同;介面顯示繁體中文,不代表地區設定就是台灣。若輸出必須固定為指定符號,可用 TEXT 明確寫格式碼。
FIXED
把數字轉成固定小數位數、有千分位的文字。
語法:
- 小數位數:選填,預設 2,可以填負數。
- 不加千分位:選填,填 TRUE 就不加千分位。
1234.567 取 1 位小數
=FIXED(1234.567, 1)結果是 1,234.6。要去掉千分位的話, 會得到 1234.6。
小數位數填負數的時候,會四捨五入到十位、百位: 是 1,200。
羅馬數字
ROMAN
把阿拉伯數字轉成羅馬數字。
語法:
- 數字:1 到 3999。
- 簡化規則:選填,0 到 4,數字越大寫法越簡短,預設 0 是標準寫法。
2026 轉羅馬數字
=ROMAN(2026)先手算:2026 = 2000 + 20 + 6,也就是 MM + XX + VI,會得到 MMXXVI。
簡化規則以 499 為例, 是標準寫法 CDXCIX, 是最簡短的 ID。
ARABIC
把羅馬數字轉回數字,是 ROMAN 的反向。
語法:
MMXXVI 轉數字
=ARABIC("MMXXVI")結果是 2026。要用雙引號把羅馬數字包起來,不然 Sheets 會把 MMXXVI 當成名稱。
需要的時候回來查就好,這一批大概就是這樣!
接下來可以
相關文章
查看所有文章TEXT 函式入門:用格式碼把數字和日期變成指定樣子的文字
TEXT 的語法與常用格式碼:0、#、千分位、百分比、yyyy/mm/dd、星期、hh:mm,並說明 TEXT 的結果是文字,不能再拿去加總。
文字清理函式參考:TRIM、CLEAN、SUBSTITUTE、PROPER 與看不見的空格
整理 TRIM、CLEAN、SUBSTITUTE、REPLACE、UPPER、LOWER、PROPER 的語法與限制,包含 TRIM 清不掉全形空格與 CHAR(160)、CLEAN 只清 ASCII 0 到 31、SUBSTITUTE 第 4 參數只換第 N 次,以及用 UNICODE 找出看不見的字元。
留言討論
共 0 則留言
