Power AutomateでExcelのVLOOKUP/XLOOKUPのような処理をスマートに実現する
株式会社パソナX-TECH本部 第1エンジニア室 クラウドソリューション第2チームの深井亘です。Power Automate を使った業務改善のしやすさに魅力を感じており、日々その活用方法を探っています。
Power Automate には開発経験がない方でも手軽に定型作業を効率化しやすいという大きな特長があります。一方で、少し複雑な処理になると、どのようにフローへ落とし込めばよいのかという壁にたびたび直面します。
本記事では、実装パターンのひとつとしてExcelのVLOOKUP/XLOOKUPのような処理を実現する方法をご紹介します。
株式会社パソナX-TECH本部 第1エンジニア室 クラウドソリューション第2チームの深井亘です。Power Automate を使った業務改善のしやすさに魅力を感じており、日々その活用方法を探っています。
Power Automate には開発経験がない方でも手軽に定型作業を効率化しやすいという大きな特長があります。一方で、少し複雑な処理になると、どのようにフローへ落とし込めばよいのかという壁にたびたび直面します。
本記事では、実装パターンのひとつとしてExcelのVLOOKUP/XLOOKUPのような処理を実現する方法をご紹介します。
知識・情報
2026/07/17 UP
- 技術
- できること
- Power Automate
- Power Platform
Power Automateは「型」を知ると作りやすくなる
Power Automate は、Power Platform の製品群のひとつであり、業務の自動化を比較的手軽に実現できる便利なツールです。ノーコード・ローコードで利用できるため、システム開発の経験がない方でも業務改善取り組みやすく、実際の現場でも広く活用されています。
一方で、Power Automate を使い続けていくと、「やりたいことはあるけれど、どのようにフローへ落とし込めばよいのかわからない」という壁に直面する場面が増えてきます。
たとえば、特定の条件に応じて値を切り替えたい、複数のデータをまとめて扱いたい、すでにある値をもとに別の値を効率よく取得したい、といったケースです。Power Automate にはさまざまなアクションが用意されており、同じ処理でも複数の作りかたが考えられます。そのため、どの機能をどのように組み合わせればよいのか迷ってしまう場面があります。こうした迷いが積み重なると、同じような処理の繰り返しや条件分岐が増え、フローが複雑になりやすくなります。
こうした悩みを乗り越えるために大切なのが、「型」を身につけることです。ここでいう型とは、よくある課題に対して、どのように考え、どの機能をどう組み合わせて解決するかという実践的なパターンのことです。型を知っていると、やりたいことをフローに落とし込むまでの見通しが立ちやすくなります。
今回は、そんな型のひとつとしてExcelのVLOOKUP/XLOOKUPのような処理をスマートに実現する方法をご紹介します。
あなたならどう作りますか?
ここからは、2つの例題を通して実装パターンを見ていきます。
- 1つ目は、勘定科目をもとに債権債務区分を取得するケースです。
- 2つ目は、送信先の言語をもとにメールテンプレートを切り替えるケースです。
どちらも一見すると、条件分岐や繰り返し処理が必要に見えます。しかし、JSON Dictionaryと呼ばれるデータ形式を使うことで、条件分岐や繰り返し処理を使わずに意外なほどシンプルに実装できます。
例題1:勘定科目を債権債務区分に変換する
ケース説明
「ある値をもとに別の値を取得したい」という要件は実務でよくあります。たとえば、分類コードをもとに分類名称を取得したり、小分類から対応する大分類を取得したりするケースです。
今回はその一例として「取引先別残高」に含まれる勘定科目を、別表で定義しているルールをもとに債権債務区分へ変換するケースを考えてみます。
図1は、この例題で実現したい処理の全体像です。
この例では、「取引先別残高」に含まれる勘定科目をもとに、対応する債権債務区分を取得します。
前提
この例題では、「取引先別残高」と「【別表】勘定科目ごとの債権債務区分」を、それぞれ SharePoint リストとしてデータ化済みとします。
図2は、今回使用する2つの SharePoint リストのイメージです。
また、今回作成する Power Automate のフローでは、2つの SharePoint リストに登録されているデータをあらかじめ「複数の項目の取得」アクションで取得済みとします。
問題
図3は、2つの SharePoint リストから取得したデータをもとに、最終的に得たい出力を示したものです。
図3のように、2つの SharePoint リストから取得したデータを入力情報として「勘定科目」を「債権債務区分」に置き換えた出力を得るためには、どのようなアクションを追加すればよいでしょうか。
想定解答
変数を使って変換後の値を保持する方法もあります。繰り返し処理の中で変換ルールを1件ずつ探す方法も考えられます。フィルター処理で一致するデータを検索する方法を思い浮かべた方もいるかもしれません。
実は、この例題はそれらの方法よりも少ないステップで実現できます。
図4は、今回の想定解答となるフロー構成です。
図4の通り、「選択(Select)」アクションと「作成(Compose)」アクションを中心とした構成で実現できます。
実現方法
図5は、図4のフローの中で、勘定科目を債権債務区分に置き換えている箇所を示したものです。
このフローにおける「勘定科目を債権債務区分に置き換える」処理を実現している方法が、JSON Dictionary というデータ形式です。
フロー内では、「売掛金なら債権」「買掛金なら債務」のように、勘定科目を債権債務区分へ変換するためのルールを JSON Dictionary として作成しています。
「処理後の取引先別残高」という名前を付けた選択アクションでは、この変換ルールを参照しながら、「取引先別残高」のそれぞれの行に含まれる勘定科目をもとに、対応する債権債務区分を取得しています。
このように、変換ルールを JSON Dictionary として事前に作成しておくことで、条件分岐や繰り返し処理を使わなくても、「ある値をもとに別の値を取得したい」という要件を実現できます。
例題2:自動送信メールにおける本文テンプレートの多言語対応
ケース説明
次に、自動送信メールの本文テンプレートを、送信先ごとに切り替えるケースを考えてみます。
図6は、送信先に設定された言語をもとに、日本語版または英語版のメールテンプレートを使い分けるイメージです。
このケースでは、送信先ごとに指定された言語に応じて、メールの件名と本文を切り替える必要があります。
また、単に日本語版・英語版の本文を用意するだけではなく、送信先ごとの情報も本文に反映する必要があります。今回の例では、宛名として送信先の氏名を差し込み、回答を依頼するフォームの URL も本文内に含めます。
図7は、このメールテンプレートで満たすべき要件を整理したものです。
つまり、このメールテンプレートでは、次の4つの要件を満たす必要があります。
- 件名が、指定された言語であること
- 本文が、指定された言語であること
- 本文内に、宛名を差し込めること
- 本文内に、回答フォーム URL を差し込めること
たとえば、日本語が指定されている送信先には、日本語の件名と本文を使用し、その本文内に送信先の氏名と回答フォーム URL を差し込みします。英語が指定されている送信先も同様に、英語の件名と本文を使用し、必要な情報を差し込みます。
このように、今回のメールテンプレートでは、言語ごとに文面を切り替えつつ、送信先ごとに変わる値を本文へ反映できることがポイントになります。
前提
この例題では、メールの件名・本文・回答フォーム URL を、あらかじめ SharePoint リストに登録しておくものとします。
図8は、メール送信に必要な設定値をまとめた SharePoint リストのイメージです。
この SharePoint リストには、情報提供依頼メールの日本語版・英語版の件名、本文、回答フォーム URL などを登録しています。
続いて、フロー内で使用する入力情報を整理します。
図9は、フロー実行時に取得している情報を示したものです。
この例題では、フローの中で大きく2種類の情報を取得しているものとします。
- ひとつは、先ほどの SharePoint リストに定義しておいたメールテンプレートの情報です。フローを実行すると、件名・本文・回答フォーム URL などの設定値を取得し、後続の処理で使いやすい形に整えます。
- もうひとつは、メール送信対象となる連絡先の情報です。図9の例では、連絡先台帳から1件分のデータを取得しており、メールアドレス、言語、本人氏名などが含まれています。
つまり、この時点でフロー内には、メール本文を組み立てるためのテンプレート情報と、送信先ごとに差し込むための連絡先情報がそろっている状態になります。
問題
図10は、ここまでに取得した情報をもとに、最終的に実現したいメール送信処理を示したものです。
図10のように、メールテンプレートの情報と連絡先情報を入力情報として、指定された言語の件名・本文を使い、宛名と回答フォーム URL を差し込んだメールを送信するためには、最低限どのようなアクションを追加すればよいでしょうか。
想定解答
図11はこのケースの想定解答を表したフローの構成図です。
つまり、このケースでは「メールの送信」アクションだけで4つの要件をすべて満たすことができます。
- 指定された言語の件名を使用する
- 指定された言語の本文を使用する
- 本文内に宛名を差し込む
- 本文内に回答フォーム URL を差し込む
変数を追加したり、言語ごとに条件分岐を作ったりしなくても、事前に取得したテンプレート情報と連絡先情報を使うことでメール送信アクションの中で必要な情報を組み立てられます。
実現方法
図12は、「メールの送信」アクション内で指定している式です。
「メールの送信」アクションの中で、事前に取得したテンプレート情報と連絡先情報を組み合わせます。
件名と本文は、JSON Dictionary 形式にしたテンプレート情報から、指定された言語に応じた値を取得します。本文内の宛名や回答フォーム URL の差し込み部分は、replace 関数を使って実際の値に置き換えます。
このように、JSON Dictionary からの値の取得と文字列の置き換えを式の中で行うことで、条件分岐や追加のアクションを増やさずにメール本文を組み立てることができます。
余談:式が複雑になる場合の考え方
今回の例では、「メールの送信」アクション内でテンプレートの取得や文字列の置き換えを行っています。
ただし、式が複雑になるほど、後から内容を読み解いたり修正したりしづらくなります。実際のフローでは、可読性やメンテナンス性を考慮して、必要に応じて「作成」アクションなどに処理を分けることをおすすめします。
JSON Dictionary 形式データについて
JSON Dictionary とは何か
ここまでの例題では、JSON Dictionary を使って、ある値をもとに対応する値を取得してきました。
ここからは、JSON Dictionary とは何か、どのように作るのかを整理します。
JSON とは、データを「名前(キー)」と「値」の組み合わせで表現するデータ形式です。人間が読んでも直感的に理解しやすいシンプルな構造であることが特徴です。
下記は JSON の基本的な例です。この例では、「社員番号」「氏名」「部署」「在籍中」といった名前に対して、それぞれ値が設定されています。
例:
{
"社員番号": "A001",
"氏名": "山田 太郎",
"部署": "営業部",
"在籍中": true
}
次に、Dictionary とは
Dictionary も JSON と同じく、データを「キー(名前)」と「値」の組み合わせで扱う考え方です。
JSON が「データをどう書くか」という表現形式を指すのに対し、Dictionary は「キーを指定して値を取り出す」ことを目的としたデータの使い方・構造を指します。
例:
Dictionary は「キーを指定して値を取り出す」ことを目的としたデータの使い方・構造であると解説しました。JSON Dictionary はDictionaryという構造をもったデータ形式です。
つまり、JSON Dictionary とは、「Key を指定すると対応する Value を取り出せるデータ」を JSON 形式で表現したものです。
下記は曜日の略称を日本語の曜日名に変換する JSON Dictionary の例です。たとえば、Key として “Mon” を指定すると、対応するValue である “月曜日” が取得できます。
例:
{
"Mon": "月曜日",
"Tue": "火曜日",
"Wed": "水曜日",
"Thu": "木曜日",
"Fri": "金曜日"
}
JSON Dictionary 形式データの作りかた
選択アクションまず、SharePoint リストから取得した設定値を、「選択」アクションを使って Key と Value の組み合わせに整えます。この例では、Key として使いたい列に SettingKey、Value として使いたい列に SettingValue を指定します。
図13は、選択アクションの設定例です。
図14は、選択アクションの出力例です。
この時点では、データはまだ配列形式のままです。そのため、このままでは Key を指定して Value を取得する Dictionary として扱うことはできません。後続の工程でもうひと手間を加えます。
式を使って加工ここからは、選択アクションの出力を JSON Dictionary 形式に変換する手順を見ていきます。
図15は、選択アクションの出力を JSON Dictionary 形式に変換する式を定義している作成アクションです。
この式では、string 関数、substring 関数、replace 関数、json 関数を組み合わせて、選択アクションの出力を Dictionary として扱える形に整えます。
json(
replace(
substring(
string(
body('選択-Key(Settingkey)とValue(SettingValue)の配列を作成')
),
1,
sub(
length(
string(
body('選択-Key(Settingkey)とValue(SettingValue)の配列を作成')
)
),
2
)
),
'},{',
','
)
)
下記はこの式の中で行っている変換手順を整理したものです。
選択アクションの出力を Dictionary 形式に変換する手順
- ① string 関数
選択アクションの出力(JSON 配列)を文字列に変換する - ② substring 関数
先頭の [ と末尾の ] を削除する - ③ replace 関数
},{ を , に置き換え、複数オブジェクトを1つにまとめる - ④ json 関数
整形した文字列を JSON に再変換し、Dictionary として扱えるようにする
手順としては、まず選択アクションの出力を文字列に変換し、先頭と末尾の角括弧を削除します。次に、複数のオブジェクトを1つにまとめ、最後に JSON として再変換します。
これにより、Key を指定して Value を取得できる JSON Dictionary として扱えるようになります。
ここまでの手順で、選択アクションの出力を JSON Dictionary 形式に変換できました。
図16は、変換後の JSON Dictionary のイメージです。
この状態になれば、Key を指定することで対応する Value を取得できます。たとえば、件名や本文のテンプレートを取り出す際も対象となる Key を指定することで必要な値を取得できるようになります。
まとめ:実装パターンを「型」として持っておく
Power Automate では、ある値をもとに別の値を取得したい場面がよくあります。今回紹介した JSON Dictionary は、そのような Excel の VLOOKUP/XLOOKUP のような処理を実現するための有効な実装パターンのひとつです。
条件分岐や繰り返し処理を増やして対応することもできますが、処理が複雑になるほど、後から内容を読み解いたり修正したりしづらくなります。今回のように、変換ルールやテンプレート情報を JSON Dictionary として持たせることで、Key を指定して必要な Value を取得できるようになり、フローをよりシンプルに組み立てやすくなります。
大切なのは、特定の関数やアクションを単体で覚えることではなく、「このような要件にはこの型が使える」と引き出しとして持っておくことです。実装パターンを型として身につけておくことで、毎回ゼロから考えるのではなく、整理された考え方をもとに、効率よく安定したフローを組み立てやすくなります。
参考資料
JSON Dictionary については、過去にオンラインイベントで登壇した際の資料を公開しています。今回の記事は、この登壇資料で紹介した内容をもとに、記事として読みやすいよう全体的に書き直したものです。
記事内では紹介しきれなかった内容も元資料には記載していますので、興味を持っていただいた場合は、以下の資料もあわせてご参照ください。
https://www.docswell.com/s/wataruf01/5WMD6P-2025-12-13-205030
この記事を書いたメンバー

クラウドソリューション第2チーム 深井亘













