一個唯一的發票編號,是分配給企業所開立每張發票的一個序列識別碼,用來追蹤付款、串連紀錄,並讓報稅作業保持整齊。最簡單的 Excel 做法,是在第一個發票儲存格中放入=COUNT($A$1:A1)+1,再往下拖曳,讓每一列新資料自動繼承下一個編號。這在一份乾淨的工作表上行得通,但一旦你刪除一列、對清單排序,或在既有項目上方貼上新資料,它就會失效,因為 COUNT 計算的是非空白儲存格的數量,而不是追蹤真正的發票順序。對於經常向客戶請款的人來說,這種脆弱性,正是大家想找一種比試算表欄位更可靠的方式來產生發票編號的主要原因。

Excel 當然可以用幾種不同的公式產生連號發票編號,本文會逐一介紹典型的做法,確切說明每一種做法會在哪裡失效,接著示範Invoice Generator如何以一種不依賴列順序、公式,或啟用巨集之活頁簿的方式,完成同樣的任務。

how to generate invoice number in excel
how to generate invoice number in excel

Excel 使用者如何嘗試自動編發票號

Excel 常見的發票編號做法有三種,每一種都有其特定的失效模式,值得在你決定是否繼續把這套工作流程留在試算表中之前先了解清楚。

COUNT 公式做法

最常見的方法,是在 A 欄放一個累計計數器,每一列遞增一次。經典的寫法有:

  • =COUNT($A$1:A1)+1放在儲存格 A2 中,再往下拖曳到 A3、A4,依此類推。
  • =ROW()-1用在正好只有一列標題列的情況,這會回傳列號減一,作為發票編號。
  • =COUNTA($A$1:A1)+1用來計算 A 欄中非空白的列數,並以此作為下一個編號,忽略空白列。

這些公式看起來很整齊,但都仰賴一個假設:列永遠不會被刪除、永遠不會被排序,發票編號也永遠不會被插進錯亂的順序中。一旦你在工作表中間插入一列新資料,列參照就會位移,編號要不是重複,就是跳號。如果你篩選這份工作表再複製貼上,也會發生同樣的問題,因為 Excel 是依照位置、而不是依照歷史紀錄來重新計算的。

手動做法

許多小型企業完全略過公式,直接手動輸入每一個發票編號,從 1001 或 0001 開始,每次遞增一。這種做法很可靠,但也很容易出錯:一次複製貼上的失誤造成重複編號、一次忘記遞增,或一個打字錯誤,都會讓兩張發票共用同一個識別碼,讓你的帳務在月底出現問題。

VBA 巨集做法

技術能力較強的使用者,會加入一小段 VBA 程式碼,在每次建立新的一列,或每次點擊按鈕時,遞增一個儲存的數值。這在那一份活頁簿內確實可行,但這個巨集只會在啟用巨集的檔案中執行,一旦這份工作表分享給安全性設定會封鎖巨集的人就會失效,把資料複製到另一份活頁簿中也無法保留。它還要求每一位收件者都要啟用巨集,而這正是大多數現代安全指南所建議避免的做法。

用 Invoice Generator 產生發票編號

這款基於瀏覽器的 Invoice Generator,繞過了上述每一種失效模式。發票編號只是表單頂端的一個簡單文字欄位,預設值為INV-001,每張發票你只需要改一次。這裡沒有公式要維護、沒有列位置要保護,也沒有巨集要啟用。以下是完整的工作流程。

  1. 在你的瀏覽器中開啟 Invoice Generator,在From區塊中填入你的姓名或公司名稱與地址。
  2. Bill To區塊中填入你客戶的姓名與地址。
  3. Invoice number欄位設定成你的編號方案所需要的格式,例如 INV-001、2026-014、ACME-0427,或任何你偏好的其他格式。
  4. 使用日期選擇器選取Issue dateDue date,再選擇符合你計費方式的Currency符號:美元($)、英鎊(£)、歐元(€),或日圓(¥)。
  5. 為每一項產品或服務新增一個line item,輸入說明文字、數量(整數如 3,或小數如 1.5 小時,都可以),以及單價。點選Add item新增更多列,或用移除按鈕刪除一列。
  6. 以百分比輸入Tax rate,並選擇性輸入一個固定的Discount金額。留意右側即時預覽中,小計、稅額、折扣,與總額會立即更新。
  7. 在底部加入你想要的任何Notes,例如付款條件、銀行資訊,或一句感謝的話。
  8. 點選Download PDF,儲存一份乾淨、可直接列印的發票。這份 PDF 是用 JavaScript 在你的瀏覽器本機產生的,因此這個檔案永遠不會上傳到伺服器,也不帶任何浮水印。

因為每一項計算與最終的 PDF,都是在你自己的裝置上產生的,你輸入的發票編號,以及與它相連的總額,都會保持私密。這個工具在頁面載入之後,也能持續離線運作,這在你於咖啡廳、客戶現場,或任何網路不穩的地方向客戶請款時很有用。

比較 Excel 做法與 Invoice Generator

下表依照向客戶請款時真正重要的幾項標準——下一個編號是否自動產生、總額是否保持準確,以及資料移動時會發生什麼——排列了四種常見的發票編號指定方式。

方法是否自動遞增?能處理插入或刪除嗎?總額是否保持精確?輸出是,只要各列保持順序否,編號會位移或重複只有在 SUM 公式保持同步時才行試算表儲存格,沒有 PDF否,每次都手動輸入是,但很容易重複只有在 SUM 公式保持同步時才行試算表儲存格,沒有 PDF是,當巨集已啟用時是,但僅限於那份活頁簿內是,如果撰寫得夠謹慎試算表,選擇性的巨集 PDF每張發票手動設定是,每張發票都是一份全新文件是,運算以整數分為單位進行,總額永遠不會變成負數可直接列印的 PDF,沒有浮水印,不會上傳
=COUNT($A$1:A1)+1(在 Excel 中)
手動編號(在 Excel 中)
VBA 巨集(在 Excel 中)
Invoice Generator(在瀏覽器中)
這裡的取捨很明確:Excel 公式可以自動遞增,但前提是沒有任何東西移動過。Invoice Generator 需要你手動輸入每一個編號,這大概只花一秒鐘,但作為交換,你得到的是一份總額保證精確到分的完成版 PDF。

為什麼光靠編號並不是一張完整的發票

一個沒有日期、客戶名稱、逐項明細,以及稅額計算的發票編號,只是一個標籤而已。Excel 能處理這一切,但把它們連結起來的公式與參照,一旦工作表成長超過十來列,就容易出現偏差。Invoice Generator 讓每一行都保持連結,在你輸入的同時即時重新運算,因此當你變更單價時,小計、稅額,與總額都會立即隨之連動。

想實際看看這套運算,考慮一行單一的顧問服務:

5 hours × $80 = $400。以 8.5% 的稅率計算,稅額這一行就變成$400 × 0.085 = $34.00。扣掉一筆固定的$20折扣後,最終總額為$400 + $34.00 − $20 = $414.00。你自己發票上的確切數字,不論包含多少行項目,都是在這個工具內以同樣的方式產生的:你輸入數字,總額就會顯示出來。這項運算是以整數分、而不是浮點數美元進行的,這能避免許多把貨幣當成純小數處理的試算表,常見的那種「差一分錢」的四捨五入問題。

從 Excel 工作表走到可直接列印的 PDF

對許多自由工作者來說,Excel 工作流程中最慢的一步,就是最後一步:列印成 PDF、調整欄寬格式、確保標題列在第二頁能重複顯示、把它附加到一封電子郵件中,並再三確認總額在調整版面時沒有跑掉。Invoice Generator 把這些步驟,全部收攏成一次點擊。它下載出來的 PDF,已經包含一個粗體的 INVOICE 標題、你的 From 與 Bill To 區塊、發票編號與日期、一份含有 Description、Qty、Unit Price 與 Amount 欄位的逐項表格,右下角的 Subtotal、Tax 與 Total 摘要,以及你在底部加入的任何備註。

較長的項目清單,會自動流入額外的頁面,因此一張 30 行的發票,不會裁掉最後幾列。因為這份 PDF 是在本機產生的,頁面載入之後,即使沒有網路連線,它也能持續運作。對於想要超越單張發票、擁有更完整計費工作流程的企業來說,

How to Generate an Invoice for Small Business這篇指南,說明了如何把多張發票串連起來,並維持一致的編號方式。

在多批次之間保持發票編號連續

不論編號是存在 Excel 裡,還是存在 Invoice Generator 裡,規則都一樣:永遠不要重複使用一個編號、永遠不要跳號,並保持格式一致。一個實用的編號方案是

YEAR-SEQUENCE(例如2026-0012026-002),這樣每一年都從零開始,一眼就能看出一張未付款發票的年份。如果你是分批請款的,比方說每個月最後一個工作日開十張發票,就在開始之前先把編號寫下來,或用一個小型文字檔當計數器。Invoice Generator 不會記住過去的編號,因此指定下一個數值的責任在你身上,但每一批做一次、而不是每一列做一次,能消除重複編號最常見的成因。

為了留下紀錄軌跡,用發票編號本身來為每個下載的 PDF 命名(例如2026-014-acme.pdf),並依年份把檔案存放在單一資料夾中。那個資料夾,就會成為你的發票登記簿,到了報稅季節,你可以直接交給會計師,不需要從試算表中重建任何東西。

相關閱讀:Turn an Excel Spreadsheet into Print-Ready Labels in Minutes