我每週都要根據一張收款紀錄,傳訊息給客戶確認款項,還要幫每一筆開一個收據編號,月底再看各月收了多少。
這三件事都要把日期和金額變成文字,今天就用 TEXT 一次做完,順便做一個中文星期。TEXT 的語法和格式碼在 TEXT 函式入門 講過了,這篇直接進到組合。
先看原始資料
收款紀錄放在 A 到 C 欄,一共六筆。流水號 C 欄是我手動接續上一張收據輸入的,上一張是 0011:
| A | B | C | |
|---|---|---|---|
| 1 | 日期 | 金額 | 流水號 |
| 2 | 2026/09/28 | 1286 | 12 |
| 3 | 2026/09/30 | 342 | 13 |
| 4 | 2026/10/03 | 2075 | 14 |
| 5 | 2026/10/07 | 918 | 15 |
| 6 | 2026/10/09 | 5340 | 16 |
| 7 | 2026/10/11 | 3417 | 17 |
我想要的成品,是在右邊多出幾欄:一句可以直接貼出去的訊息、收據編號、月份分組的鍵、星期,最後在旁邊有一張各月合計。
原始資料的三欄我都不動。日期和金額在這裡是真的日期、真的數字,後面要加總、要排序都靠它們。
把日期和金額組成一句話
D2 要的句子長這樣:「您好,已於 2026/09/28 收到款項 NT$ 1,286,謝謝!」
訊息範本:日期與金額都用 TEXT 指定樣子
="您好,已於 " &
TEXT(A2, "yyyy/mm/dd") &
" 收到款項 NT$ " &
TEXT(B2, "#,##0") &
",謝謝!"日期那段用 "yyyy/mm/dd",金額那段用 "#,##0"。如果少了 TEXT,A2 會變成日期序號 46293,B2 也不會有千分位。
往下複製到 D7,來看看結果:
| 列 | D 欄 |
|---|---|
| 2 | 您好,已於 2026/09/28 收到款項 NT$ 1,286,謝謝! |
| 3 | 您好,已於 2026/09/30 收到款項 NT$ 342,謝謝! |
| 4 | 您好,已於 2026/10/03 收到款項 NT$ 2,075,謝謝! |
| 5 | 您好,已於 2026/10/07 收到款項 NT$ 918,謝謝! |
| 6 | 您好,已於 2026/10/09 收到款項 NT$ 5,340,謝謝! |
| 7 | 您好,已於 2026/10/11 收到款項 NT$ 3,417,謝謝! |
這個範本想換成別的語氣,只要改引號裡的字就好,兩個 TEXT 不用動。
收據編號
收據編號我想要「INV-2026-0012」這種樣子:INV 開頭,接年份,最後是四位數的流水號,不夠的前面補 0。
年份可以從日期拿,流水號用 C 欄,補零交給 "0000":
收據編號:年份取自日期,流水號補成 4 位
="INV-"&TEXT(A2,"yyyy")&"-"&TEXT(C2,"0000")E2 會得到 INV-2026-0012,往下複製的結果是:
| 列 | E 欄 |
|---|---|
| 2 | INV-2026-0012 |
| 3 | INV-2026-0013 |
| 4 | INV-2026-0014 |
| 5 | INV-2026-0015 |
| 6 | INV-2026-0016 |
| 7 | INV-2026-0017 |
年份我習慣從日期取,不自己打 2026,這樣跨年之後編號就會自己換成 2027,只有流水號要記得決定要不要重新從 1 開始。
流水號超過四位數的話,"0000" 不會把多的位數切掉,12345 還是會顯示 12345,只是編號長度就不整齊了。真的有可能用到五位數,就直接寫 "00000"。
補零後的 0012 是文字。算術運算可能把它轉回數字: 得到 13,不會保留前導零;ISNUMBER(TEXT(12,"0000")) 為 FALSE。要繼續編號,仍建議用 C 欄原始數字加 1,再用 TEXT 組成顯示文字。
把這個 0012 文字放進範圍交給 SUM,結果是 0,因為文字會被略過;範圍再加入真正的數值 12,結果是 12,不是 24。算術的 +1 會把文字轉成數字,但 SUM 讀取範圍時不會套用同一個轉換。
依月份分組的鍵
月底我想知道九月和十月各收了多少。我用的方法是先做一欄「月份」,再用它去加總。
F2 把年和月組成文字:
月份分組的鍵,例如 2026年09月
=TEXT(A2,"yyyy")&"年"&TEXT(A2,"mm")&"月"結果是 2026年09月,這一欄往下複製:
| 列 | F 欄 |
|---|---|
| 2 | 2026年09月 |
| 3 | 2026年09月 |
| 4 | 2026年10月 |
| 5 | 2026年10月 |
| 6 | 2026年10月 |
| 7 | 2026年10月 |
這裡有兩個我自己的小堅持。第一,月份用 "mm" 補成兩位數:如果寫 "m",變成「2026年9月」,用文字比大小,9 會排在 10 後面,月份順序就亂了。第二,我不用 "yyyy-mm" 這種長得像日期的寫法,因為擔心 SUMIF 之類的函式把它當成日期解讀,用「年」「月」兩個字隔開,它就是單純的文字。
接著在 J2 用 UNIQUE 取出有哪幾個月份,會自動往下展開:
取出不重複的月份
=UNIQUE(F2:F7)K2 用 SUMIF 加總該月份的金額,往下複製到 K3:
該月份的金額合計
=SUMIF($F$2:$F$7,J2,$B$2:$B$7)| 列 | J 欄 | K 欄 |
|---|---|---|
| 2 | 2026年09月 | 1628 |
| 3 | 2026年10月 | 11750 |
手算一下:九月是 1286 + 342 = 1628,十月是 2075 + 918 + 5340 + 3417 = 11750,跟公式算的一樣。
加總的對象是 B 欄那些真的數字。TEXT 只用在 F 欄做鍵,還有最後把合計變成一句話:
把合計組成可以貼出去的一句話
=J2&"合計 NT$ "&TEXT(K2,"#,##0")L2 是「2026年09月合計 NT$ 1,628」,L3 是「2026年10月合計 NT$ 11,750」。加總前的金額欄不要先轉成文字,不然 SUM、SUMIF 會略過它,這件事在入門篇有提到。
只是要各月合計的話,資料透視表或 SUMIFS 搭配日期範圍也行,我選做一欄鍵,是因為鍵本身也是可以讀、可以篩選、可以拿去 UNIQUE 的標籤。
中文星期
訊息裡想加上「10/3(六)」這種寫法。月和日不用補零,用 "m/d" 就好,星期要另外處理。
TEXT(A2,"dddd") 可以直接取星期,字樣跟著試算表的地區設定走。台灣地區設定下會是中文(例如「星期六」),但每個人開的檔案設定不一定一樣,所以共用的表我會用一個不看語系的寫法:
用 WEEKDAY 取得週一到週日的編號,再從字串裡挑出對應的字
=MID("一二三四五六日",WEEKDAY(A2,2),1)WEEKDAY(A2,2) 的第二個參數填 2,週一是 1、週二是 2,一直到週日是 7。MID 再從「一二三四五六日」這串字裡,拿出第幾個字。G 欄的結果是:
| 列 | G 欄 |
|---|---|
| 2 | 一 |
| 3 | 三 |
| 4 | 六 |
| 5 | 三 |
| 6 | 五 |
| 7 | 日 |
最後 H2 把日期跟星期合在一起:
日期加上括號裡的星期
=TEXT(A2,"m/d")&"("&G2&")"| 列 | H 欄 |
|---|---|
| 2 | 9/28(一) |
| 3 | 9/30(三) |
| 4 | 10/3(六) |
| 5 | 10/7(三) |
| 6 | 10/9(五) |
| 7 | 10/11(日) |
成品與如何維護
A 到 C 是手動輸入的原始資料,D 到 H 是每一列的公式,J 到 L 是各月合計。
新增一筆收款,在第 8 列輸入日期、金額、流水號,再把 D8 到 H8 的公式從上一列複製下來。如果不想每次複製,可以參考 ARRAYFORMULA 自動填滿。
要記得的是,UNIQUE 和 SUMIF 裡的範圍 F2:F7、B2:B7 也要延伸到新的那一列,例如改成 F2:F8、B2:B8。K 欄的 SUMIF 遇到新月份,也要自己往下複製一列。
格式碼更細的差異,像是方括號條件、地區設定下的星期字樣,整理在 TEXT 格式碼進階陷阱。先把訊息範本改成你自己的版本,試試看吧!
我是喜特先生,Mr. Sheet,我們下個教學見!
接下來可以
相關文章
查看所有文章留言討論
共 0 則留言
