PR

Power Queryで為替レート換算するカスタム関数を作成する

Power Queryで為替レート換算するカスタム関数を作成する Power Query応用
スポンサーリンク

輸出するときなど、外貨(ドルとかユーロ)で販売することがありますが、外貨と邦貨(日本円)が混在すると金額が集計できません。

外貨を邦貨に換算して集計し、売上金額を日本円で集計していると思います。

Power Queryのカスタム列を追加して、USDは1ドル×150円、EURは1ユーロ×180円といった感じで通貨ごとに条件式を入れることは可能です。

= if [通貨] = "USD" then [金額] * 150
else if [通貨] = "EUR" then [金額] * 180
else [金額]
為替レート換算するカスタム列

しかし、このやり方だと通貨が増えれば増えるほど数式が複雑になります。

売上明細から為替レート換算するカスタム関数を作成すれば、通貨と金額さえあれば簡単に換算できます。

カスタム関数の呼び出し

次のサンプルのように、為替レートはマスタ化しておけば通貨が増えても数式を修正する必要はありません。

サンプルデータ

換算した結果です。

為替レート換算の結果

本記事では、為替レート換算するカスタム関数を作成する方法を解説します。

スポンサーリンク

サンプルデータ

為替レートと売上明細をサンプルデータとして使用します。

サンプルデータ

サンプルデータはこちらからダウンロードしてください。

スポンサーリンク

データの加工

サンプルデータでPower Queryエディターを開くと、すでに為替レートと売上明細があります。

この2つのデータをもとに為替レート換算を行うカスタム関数を作成します。

サンプルデータで作成済みのクエリ

カスタム関数を作成する

空のクエリからカスタム関数を作成します。

「ホーム」タブー「新しいソース」ー「その他のソース」ー「空のクエリ」をクリックします。

空のクエリ作成

クエリの名前は分かりやすいように「為替レート換算」と入力します。数式を入力しやすいように、「ホーム」タブー「詳細エディター」をクリックします。

詳細エディターを開く

詳細エディターが開きました。後述の数式を入力し、OKをクリックします。

詳細エディター画面

数式の次の通りになります。順番に解説します。

= (currency as text, amount as number) =>
let
    ソース = 為替レート,
    通貨取得 = Table.SelectRows(ソース, each ([通貨] = (currency))),
    レート取得 = 通貨取得{0}[レート],
    レート換算 = レート取得 * (amount)
in
    レート換算

1行目ですが、関数に渡すパラメーターを記述しています。currencyというテキスト型の通貨と、amountという数値型の金額の2つのパラメーターがカスタム関数に渡せるようになります。

(currency as text, amount as number) =>

次にletの中身を見ていきます。ソースは為替レートにしています。1ドル150円といった為替レートを持っており、このマスタをもとに換算します。

let
    ソース = 為替レート,

この時点ではJPY、USD、EURの3行を読み込んでいます。

為替レート

為替レートを読み込んだ後、特定通貨の為替レートを取得します。パラメーター「currency」で指定した通貨の行を取得しています。

    通貨取得 = Table.SelectRows(ソース, each ([通貨] = (currency))),

パラメーター「currency」にUSDを入力していた場合、USDの行だけ読み込んでいる状態です。

USDでフィルター

取得した通貨のレートを取得します。USDであれば150が取得されます。

    レート取得 = 通貨取得{0}[レート],

最後に、取得した換算レートとパラメーター「amount」で入力した金額と掛け算すると、換算が完了です。

    レート換算 = レート取得 * (amount)

OKをクリックした後は、次の画面が表示されます。

カスタム関数の完成

カスタム関数を実行する

作成したカスタム関数を実行してみましょう。

currencyに「USD」、amountに「10」と入力し、「呼び出し」をクリックします。

カスタム関数の実行

カスタム関数が実行され、1500(10ドル×150円)と返ってきました。

カスタム関数の実行結果

カスタム関数を呼び出して列を追加する

作成したカスタム関数を売上明細で使います。

「列を追加」タブー「カスタム関数の呼び出し」をクリックします。

列の追加でカスタム関数の呼び出し

次を入力し、OKをクリックします。

新しい列名:「金額(日本円)」を入力
関数クエリ:「為替レート換算」を選択
currency:列名を選択し、「通貨」を選択
amount:列名を選択し、「金額」を選択

カスタム関数の呼び出し

邦貨(日本円)に為替レート換算された金額列が追加されました。

為替レート換算する列が追加
スポンサーリンク

データの出力

「ホーム」タブー「閉じて読み込む」をクリックします。

閉じて読み込む

売上明細が出力されました。

データ出力結果

Excel/Power Queryのデータ加工相談サービス

Excel/Power Queryのデータ加工で悩んでおり、ネットや本で調べても解決しない場合は、一度ご相談下さい。

やりたいことをヒアリングして解決までサポートいたします。

ご相談内容の例
  • 前任者が作ったExcelファイルの数式等が意味不明で困っている
  • Power Queryを使ってExcelでデータ加工を行いたいが、うまく使いこなせない
  • 手作業が多く、業務効率化を行いたいが、どう進めていいか分からない

ココナラでご相談を受け付けております。ココナラの会員登録が必要になります。

Power Queryの学習に役立つおすすめ本
初心者向け 初心者~中級者向け 中級者~上級者向け
Power Query応用
スポンサーリンク
プロフィール
たがみ

IT業界20年程度のシステムエンジニアです。
構築したシステムのデータ検証をExcelで実施することが多く、検証作業の効率化を模索しているときにPower Queryと出会いました。
Excel業務効率化の手助けになればと当ブログを開設しました。
今ではデータ分析でPower BIを活用しており、Power BI、Excelの両方でPower Queryを活用しています。

たがみをフォローする
シェアする
たがみをフォローする
タイトルとURLをコピーしました