收據是一份簡短的文件,用來記錄一筆已完成的付款:誰付給誰、買了什麼、何時發生、總額是多少,以及找回多少零錢。若要在 Excel 中製作收據,您要先建立一個標題區塊,放入商店名稱、付款日期、收據編號與顯示貨幣,然後加入一個逐項明細表,每一列將數量乘以單價。完成品項之後,再加入小計、一次性的折扣、套用於折扣後小計的百分比稅額、一次性的小費,以及最終總額的公式,並將該總額與顧客實際支付的金額進行比較。應找回的零錢就是支付金額減去總額。這種架構在紙本上沒問題,大多數人也確實是在工作表的前二十列左右建立完全相同的版面。問題在於 Excel 的預設運算採用二進位浮點數表示法,因此像 0.10 加上 0.20 這種對分的樸素加總,可能會顯示為 0.30000000000000004,而且任何您建立的版面,每次收據的形狀改變時都必須重新調整格式。

how to make receipt in excel
如何在 Excel 中製作收據而不使用脆弱的公式

「在 Excel 中製作收據」真正的含義

搜尋如何在 Excel 中製作收據的人,通常想要的是以下三種之一:一份可列印的版面,填寫一次後交給顧客;一份活頁工作表,輸入品項後讓公式計算總額;或一份可重複使用的範本,存成 .xltx 後逐筆交易複製使用。這三種做法共用相同的檔案結構。標題列存放固定的資訊,例如商店名稱、地址、付款日期,以及一組唯一的收據編號,以便能夠區分每一張收據。標題下方的一個小型表格,每一個購買的品項佔一列,包含說明、數量、與單價欄位,再加上一個將這兩個值相乘得到列總額的公式欄位。品項下方則分別用獨立列存放小計加總、以正數輸入後再扣除的一次性折扣、將百分比套用於折扣後小計的稅額列、可選的小費列,以及將稅額與小費加在折扣後小計之上的最終總額。支付金額列與零錢列則作為文件的結尾。標題與總額之間的所有內容都是公式,而不是寫死的數字,因此修改數量或價格會自動更新收據的其他部分。

一步步在 Excel 中建立基本收據

開啟一個空白活頁簿,將商店名稱放在 B1 儲存格,地址放在 B2,並在 B4 輸入「Receipt」並使用較大的字型。在 A6 與 B6 儲存格分別輸入「Date」與實際的付款日期;在 A7 與 B7 輸入「Receipt #」以及一個每次遞增的編號。將 A9 儲存格標示為「Item」,B9 為「Qty」,C9 為「Unit Price」,D9 為「Line Total」,然後在 D10 輸入 =B10*C10,並將該公式向下複製到您預期銷售的所有品項。在第 20 列將 A20 標示為「Subtotal」,並在 D20 輸入 =SUM(D10:D19)。將 A21 標示為「Discount」,在 B21 輸入一個正數例如 3;在 D21 輸入 =-B21,讓它從小計中扣除。將 A22 標示為「Discounted subtotal」,並在 D22 輸入 =D20+D21。將 A23 標示為「Tax %」並在 B23 輸入 8,接著將 A24 標示為「Tax」並在 D24 輸入 =ROUND(D22*B23/100,2);ROUND 就是避免出現冗長小數尾巴的關鍵步驟。將 A25 標示為「Tip」並在 B25 輸入一個一次性的小費例如 4;在 D25 輸入 =B25。將 A26 標示為「Total」並在 D26 輸入 =D22+D24+D25。最後,將 A28 標示為「Tendered」並在 B28 輸入一個值,A29 標示為「Change」並在 B29 輸入 =B28-D26。將價格欄位格式化為貨幣格式,加寬欄位讓說明文字放得下,視需要加上框線以呈現列印外觀,並將檔案存成範本 (.xltx),這樣每筆交易可以複製使用而不用重新建立。

Excel 方法開始出現瓶頸之處

最大的問題是運算精度。Excel 將大多數十進位數值以二進位浮點數表示法儲存,因此公式 =0.10+0.20 會回傳 0.30000000000000004,而像 1.10、2.20 與 3.30 這樣一欄單價,加總後可能變成 6.600000000000001,除非每一個步驟都包進 ROUND(...,2) 中。只要忘了對其中一個儲存格四捨五入,列印出的收據就會出現一個真實商家絕不會產生的多餘數字。下一個問題是版面維護。每當明細項目數量改變時,SUM 範圍必須編輯、列印範圍必須重新設定,而收據的視覺外觀也會因為列高變動而跑掉。儲存了十到二十份之後,很難記得哪個檔案對應到哪筆交易,而一個不小心被覆寫的欄位(例如單價被換成「TBD」之類的標籤)會在無聲無息中破壞總額。Excel 也沒有「已付款收據」這種原生概念。活頁簿會毫不猶豫地列印出「Total: $31.00, Tendered: $0.00, Change: $0.00」這種收據而不發出警告,這在報價單上沒問題,但對收據而言是錯的。如果您需要前述任何一道防護——精確的十進位運算、不會漂移的固定版面,以及在顧客尚未付清款項時拒絕列印的把關機制——您都必須自行打造,或是換用其他工具。

使用 Receipt Maker 建立同樣的收據

瀏覽器工具 Receipt Maker 採用了相同的 Excel 版面,但其中每一個脆弱的環節都會為您處理好。每個單價都以最小貨幣單位的整數計數儲存,因此 0.10 會變成 10,0.20 會變成 20,兩者相加恰好等於 30,後面不會再冒出十四個多餘的數字。每個列總額都是經驗證的數量(最多三位小數)與整數單價(最多兩位小數)的四捨五入乘積;一次性折扣會被強制限制為不大於小計;百分比稅額只有在套用於折扣後小計後才進行四捨五入。若輸入的支付金額低於計算出的總額,工具會拒絕產生已付款收據;等於總額時,零錢為零;高於總額時,差額會顯示為零錢。此工具每張收據最多接受 100 個明細項目,並在總額超出其支援範圍時回報錯誤,而不是默默地寫出垃圾資料。所有計算、預覽、列印與儲存都在目前的瀏覽器中完成;商店名稱、明細品項、價格、備註與付款數字都不會離開您的裝置。使用方式請依照下列步驟。

  1. 在工具頂部的欄位中輸入商店名稱、付款日期、收據編號,並選擇顯示貨幣。
  2. 將每個購買的品項分別新增為一列:說明、最多三位小數的數量,以及最多兩位小數的單價。工具會使用整數最小貨幣單位將兩者相乘得到列總額。
  3. 輸入任何一次性折扣、適用於該筆交易的百分比稅額、一次性小費,以及顧客實際支付的金額。
  4. 確認計算出的總額小於或等於支付金額。若成立,差額會顯示為零錢,且只有在此時才會產生已付款收據的預覽。
  5. 在列印或下載之前,請逐一檢視預覽中的每個明細項目、小計、折扣、稅額、小費、總額、支付金額與零錢數值。
  6. 使用「Print receipt」開啟瀏覽器的列印對話框 (window.print,請參考 MDN Window print reference) 進行紙本列印或由系統產生 PDF,或使用「Download HTML」將收據存成一個獨立檔案,之後可用任何瀏覽器重新開啟。
  7. 每次編輯後請重新製作一份收據,並在交給任何人之前與原始付款憑證比對,因為修改任何欄位都會清除上一次產生的結果。

一個具體的例子可以讓運算順序更清楚。兩項品項分別為 $4.50 乘以 3 = $13.50,以及 $7.25 乘以 2 = $14.50,小計為 $28.00 (13.50 + 14.50)。$3.00 的一次性折扣使折扣後小計降為 $25.00 (28.00 減 3.00)。對該折扣後小計課以 8% 的稅額等於 $2.00 (25.00 乘以 0.08),再加上 $4.00 的小費,總額為 $31.00 (25.00 + 2.00 + 4.00)。$40.00 的支付金額會產生 $9.00 的零錢 (40.00 減 31.00)。這些數字與該工具會列印的數字完全相同,而其運算過程也與每個儲存格都包進 ROUND(...,2) 的 Excel 運算結果相同。

收據與發票的比較:您真正需要的是哪一種文件?

收據是記錄一筆已經發生的金錢移轉。發票則是一筆尚未發生的款項請求。兩者外觀上頗為相似;都會列出品項、總額與稅額;但它們回答的是不同的問題,若混淆會引發實際的麻煩。若您在顧客已經付款之後才交付發票,文件會暗示對方仍欠您錢。若在金錢尚未交付之前就交付收據,文件則會暗示一筆實際上並未發生的付款。Receipt Maker 刻意只針對前者設計:當輸入的已付金額低於計算出的總額時,它會拒絕產生已付款收據。若您實際需要的是一份要求顧客於特定日期前付款、列有應付餘額且沒有「零錢」一欄的文件,請改用 Invoice Generator。若顧客只支付了部分款項,而您需要追蹤剩餘金額,則這兩個工具都不適合;您需要的是支援付款分配並保留稽核軌跡的記帳軟體。

應擷取的收據欄位

一份實用的收據應該簡短且一致。下表列出標準的已付款收據應包含的欄位,以及在一般交易中每個數值的來源。這些與 Receipt Maker 所收集並列印的欄位相同,並且能整齊對應到上文所描述的 Excel 版面。

欄位記錄內容資料來源
商店名稱誰收到了款項您檔案中的營業名稱
付款日期金錢移轉發生的時間實際的交易日期
收據編號此筆交易的唯一識別碼您紀錄中遞增的計數器
明細品項購買了什麼、數量為何、單價多少每一項購買的產品或服務
小計經驗證的列金額加總由明細品項計算得出
折扣從小計中扣除的一次性金額您的促銷活動或人工調整
稅額套用於折扣後小計的百分比適用於該筆交易的稅率
小費稅後加上的一次性金額顧客的選擇
總額折扣後小計加上稅額再加上小費計算得出
支付金額顧客實際支付的金額所收到的現金或所刷的信用卡
零錢支付金額減去總額(當支付金額較高時)計算得出,或當金額相符時為零

這份清單還需要附帶兩點提醒。第一,稅務處理因地區與銷售內容而異,沒有任何通用工具能涵蓋所有司法管轄區的稅率表、免稅清單或四捨五入規定。請在將稅額欄視為權威數字之前,先確認稅率與計算順序。第二,已下載或已列印的頁面可以用任何文字編輯器或瀏覽器進行修改,因此它並非防竄改的紀錄。針對稽核、保固、保險理賠或任何受規範的紀錄保存需求,請以付款處理商寄送的電子郵件、收銀機日誌、銀行對帳單明細,或簽署過的合約作為您的真實來源。