2026年9月 USD/IDR 平均匯率為 17,742.56,是22個每日觀測值的平均,從9月1日的 17,744.7 到9月30日的 17,891.1。只需請求一次當月每日匯率再求平均。
用 API 計算平均值
使用你要平均的月份的每日觀測值。把回傳的匯率相加,再除以觀測值的個數,每個觀測值的權重相同。請求以 USD 為基準貨幣,請求的貨幣為 IDR。把平均值用於試算表或發票計算時,請在結果旁保留這組貨幣對。
- 取得金鑰並設定環境變數 在 narwhalapi.com/signup 取得免費金鑰,然後放進環境變數
NARWHAL_API_KEY。腳本會讀取該變數,並在Authorization標頭中以 Bearer 權杖的形式傳送金鑰。 - 設定月份與貨幣 對每日觀測值端點使用該月的起訖日期。腳本中的請求以 USD 為基準,選取2026年9月的 IDR。其
limit足以容納該月的觀測值列數。 - 請求匯率並計算平均值 腳本會請求觀測值,把每個日期與匯率放在一起,並計算算術平均。它先輸出觀測值個數和平均值,再輸出帶日期的第一筆和最後一筆觀測值。計算時從每筆觀測值內的
rates讀取匯率,轉成數字後再相加。日期與這個數字一起保留,所以輸出的第一列和最後一列仍帶有日期。import os import requests r = requests.get( "https://api.narwhalapi.com/v1/fx/rates/USD/observations", params={ "currencies": "IDR", "start_date": "2026-09-01", "end_date": "2026-09-30", "limit": 100, }, headers={"Authorization": f"Bearer {os.environ['NARWHAL_API_KEY']}"}, timeout=10, ) r.raise_for_status() days = [(d["date"], float(d["rates"][0]["rate"])) for d in r.json()["observations"]] print(len(days), "days, average", round(sum(v for _, v in days) / len(days), 2)) print("first", days[0], "last", days[-1]) - 對照結果檢視日期 請把回傳的第一個和最後一個日期,與你請求的月份對照檢視。把這些日期和觀測值個數與平均值一起保存,結果的期間就很明確,背後的每日資料列也可以追溯。
一個月的每日觀測值列數不會超過100列,所以請求的 limit 足以完成這次計算。時間範圍更長時,請沿著 next_cursor 取得其餘觀測值。更長範圍的平均值需要該範圍內的全部觀測值,第一次回應可能只包含其中一部分。
在試算表中計算平均值
手動計算一個月時,把每日匯率貼到 B 欄,並把觀測日期放在旁邊。使用你要平均的那個月的列。2026年9月 USD/IDR 範例有22個觀測值,所以匯率落在這個公式使用的範圍內。
=AVERAGE(B2:B23)這個公式對該範圍內的匯率取簡單平均。與 Python 計算相同,每個每日觀測值的貢獻相等。貼上匯率時請保留日期欄,這樣可以確認儲存格代表的月份,以及納入的第一筆和最後一筆觀測值。
在較長的清單中按月求平均時,使用 AVERAGEIFS。用觀測日期選出應計入每個平均值的月份的匯率。這樣可以把一長串帶日期的觀測值放在一起,同時用各月自己的列分別計算平均值。
各種情況適合的方式
| 情況 | 最適合的方式 | 原因 |
|---|---|---|
| 手動計算一個月 | 試算表 | AVERAGE 計算當月每日匯率的平均值 |
| 多個月份或多種貨幣 | 對起訖日期迴圈的腳本 | 對每個請求的月份或貨幣重複每日觀測值的計算 |
| 符合稽核要求的政策匯率 | 會計政策規定的匯率 | 所需方法取決於該政策 |
試算表和腳本計算的是每日觀測值的平均值。政策匯率可能要求其他方法,例如月底匯率的平均值或加權平均。在把結果用作發票匯率之前,請先確定你的帳務需要哪種方法。
月平均匯率要把週末算進去嗎?
不要。資料只包含觀測日,週末沒有資料列。通常的做法是對這些觀測日求平均。請用回傳的列數作為這個算術平均的除數。若改用日曆天數,計算就會改變,因為總和裡只有回傳的每日觀測值。平均值要與確實有匯率的日期對應。
我的帳務需要哪種平均值?
這取決於你的會計政策;請向會計師確認政策規定了哪種匯率和方法。每日觀測值的算術平均是常見選擇之一。有些會計規則要求使用月底匯率的平均值或加權平均。這些方法選用的匯率或權重不同,所以僅憑每日平均值無法確定帳務應採用哪個匯率。
如果回應的起始日期晚於我請求的月份怎麼辦?
所有帳戶都可讀取完整歷史。在將結果視為完整的月度平均值之前,請先查看回傳的第一個日期。如果回應從月中開始,回傳的觀測值只涵蓋該部分。
計算範例:2026年9月 USD/IDR
對於2026年9月,取當月22個每日 USD/IDR 觀測值的平均。第一筆觀測值日期為2026年9月1日,最後一筆為2026年9月30日。把每日匯率相加,除以觀測值個數,再把得到的平均值用於發票計算。
| 2026年9月計算 | 數值 |
|---|---|
| 每日觀測值 | 22 |
| 2026年9月1日的匯率 | 17,744.7 |
| 2026年9月30日的匯率 | 17,891.1 |
| 每日觀測值的算術平均 | 17,742.56 |
| 發票金額 | USD 8,000 |
| 依月平均匯率開立發票 | 計算:8,000 × 17,742.56 = 141,940,480 IDR |
發布於 。