ご質問や問題がありますか?GitHub Discussionsでお気軽にご相談ください。

Excelで為替レートを扱う標準の手段は、Microsoft 365の「通貨」データ型です。ただしこれは、特定の提供元に固定できず履歴も取得できない、リアルタイムの合成市場レートです。Frankfurterは透明です。公的機関のレートが必要な場合は、EU付加価値税用のECB基準レート、ポーランドのNBP、ブラジルのPTAXなど固定の機関を選択できます。固定した提供元の過去データは、公表時のまま変わりません。WindowsとMacの両方で、Power Queryがデータを取得します。Windows環境ではさらに、1行の数式による素早い換算も可能です。

Power Query

WindowsとMacの両方で使える標準的な方法です。データ > Webからを選択し、CSVエンドポイントを入力すると、date,base,quote,rateを含むテーブルが読み込まれます。データ > すべて更新でいつでも最新化できます:

https://api.frankfurter.dev/v2/rates.csv?base=usd&quotes=eur

複数の対象通貨をカンマ区切りで一度に取得:

https://api.frankfurter.dev/v2/rates.csv?base=usd&quotes=eur,gbp,jpy

金額の換算

Power Queryは換算後の総額ではなく為替レートを返します。読み込んだレートのセルに換算前の金額を掛け合わせてください。Windows版のMicrosoft 365では、クエリを作成せずに数式から直接APIを呼び出すこともできます。数式 > 名前の定義で名前をFRANKFURTERとし、次のように定義します:

=LAMBDA(amount, from, to, [date], amount * NUMBERVALUE(TEXTBEFORE(TEXTAFTER(WEBSERVICE("https://api.frankfurter.dev/v2/rate/" & from & "/" & to & IF(ISOMITTED(date), "", "?date=" & YEAR(date) & "-" & TEXT(MONTH(date), "00") & "-" & TEXT(DAY(date), "00"))), """rate"":"), "}"), "."))

その後、任意のセルから呼び出します:

=FRANKFURTER(100, "usd", "eur")

日付を指定して過去のレートを取得:

=FRANKFURTER(100, "usd", "eur", DATE(2020, 1, 2))

WEBSERVICE関数はWindowsでのみ利用可能です。Excelの数式にはJSONパーサーがないため、この関数はレスポンスのテキストからレートを直接切り出しています。NUMBERVALUEで小数点を明示的に指定しているため、小数点にカンマを使うロケールでも動作します。Mac環境ではPower Queryで読み込んだレートのセルを参照して掛け算を行ってください。

特定の公的機関を指定

デフォルトでは全提供元を組み合わせた合成レートが返されます。クエリURLにprovidersを追加して、特定の機関を指定できます。税務や会計では自国の中央銀行レートが法的に義務付けられる場合が多いため不可欠です:

https://api.frankfurter.dev/v2/rates.csv?base=usd&quotes=eur&providers=ecb
ECB
欧州中央銀行の基準レート。EUのVATおよび関税の公式基準。
NBP
ポーランド国立銀行。ポーランドの税務申告で使用。
CNB
チェコ国立銀行。チェコの会計および税務の公式基準。
BCB
ブラジル中央銀行PTAX。ブラジルの契約および税務の公式基準。
BANXICO
メキシコ銀行の米ドル債務決済用FIXレート。

すべての提供元を確認できます。特定の提供元を指定した場合、その機関の公表スケジュールに従うため、合成市場レートより最新レートが1日遅れる場合があります。

過去の推移データ

期間指定にはfromを使用し、group=monthで月ごとに集約してグラフ作成に適した形式にします。Power Queryで読み込めば、通常のクエリと同様に更新されます。合成レートの過去データは、新しいデータの到着によって若干変わることがあります。数値を固定したい場合は提供元を指定してください。

https://api.frankfurter.dev/v2/rates.csv?from=1949-12-01&base=usd&quotes=gbp&providers=bbk&group=month

これはドイツ連邦銀行(ブンデスバンク)のアーカイブから1949年以降の米ドル対英ポンドのレートを取得します。1ポンド=2.80ドルの固定相場が何年も横ばいを続け、1967年に崩れる様子が見られます。連邦銀行のFixingデータは、1948年からの米ドル対ドイツマルク、および1949年から1970年までの主要通貨レートを網羅しています。1999年以降は欧州中央銀行が引き継いでおり、現代の連続した時系列には標準の合成レートまたはproviders=ecbを使用します。