Power Appsでアプリを作っていると、「画面を移動したい」「一覧を検索したい」「入力した内容を保存したい」といった場面が出てきます。その動きを式で表すときに使うのが、Power Fxの関数です。
この記事では、Power Appsでよく使う30個の関数を、目的別に8つのグループへ分けて紹介します。それぞれの関数を、構文・役割・短い使用例の順に確認できます。
すべてを暗記する必要はありません。まずは「何をしたいか」からグループを選び、必要な関数を探すレファレンスとして使ってください。
この記事の読み方
関数の基本形は、次のとおりです。
関数名(第1引数, 第2引数, ...) → 戻り値
- 関数名:何をするかを表す名前
- 引数:関数へ渡す対象や条件
- 戻り値:関数を実行して得られる結果
この記事の式は、日本語環境など、小数点にピリオドを使う地域の表記です。引数はカンマ ,、複数の処理はセミコロン ; で区切ります。言語・地域設定によっては、引数が ;、処理の連結が ;; になるため、コピーした式でエラーが出る場合は区切り記号を確認してください。

関数一覧
| 分類 | 関数 |
|---|---|
| ① 画面を移動する | Navigate、Back、Exit |
| ② フォームを操作する | NewForm、EditForm、SubmitForm |
| ③ データを探す・並べる | Filter、Search、StartsWith、Sort、SortByColumns、First、Last |
| ④ データを追加・更新する | Patch、Defaults、Blank、IsBlank |
| ⑤ 条件で分ける | If、Switch |
| ⑥ 日付・時刻を扱う | Now、Today、DateTimeValue、Hour、Minute |
| ⑦ 計算・文字にする | Sum、Int、Mod、Text |
| ⑧ ユーザー情報・お知らせ | User、Notify |

① 画面を移動する
1. Navigate:指定した画面へ移動する
Navigate(画面 [, 画面切り替え効果 [, コンテキスト変数]])
ボタンを選択したときなどに、指定した画面へ移動します。
// ボタンの OnSelect
Navigate(BrowseScreen1, ScreenTransition.Fade)
第2引数を省略すると、画面切り替え効果は ScreenTransition.None になります。正常に実行されると true、エラーが起きると false を返しますが、通常は画面移動のために使います。
2. Back:直前の画面へ戻る
Back([画面切り替え効果])
現在の画面へ来る前に表示していた画面へ戻ります。
// 戻るボタンの OnSelect
Back()
「特定の画面へ移動する」のが Navigate、「直前の画面へ戻る」のが Back です。
3. Exit:アプリを終了する
Exit([サインアウト])
実行中のアプリを終了します。Exit(true) とすると、終了時にPower Appsからもサインアウトします。
// 終了ボタンの OnSelect
Exit()
共有端末で true を使う場合は、ほかのMicrosoft 365サービスへの影響も考え、実際の環境で動作を確認してください。
② フォームを操作する
フォームには、新規入力・編集・表示のモードがあります。次の関数でモード切り替えや保存を行います。
4. NewForm:新規入力モードにする
NewForm(フォーム名)
フォームを空の新規入力モードへ切り替えます。
// 新規作成ボタンの OnSelect
NewForm(EditForm1); Navigate(EditScreen1)
5. EditForm:編集モードにする
EditForm(フォーム名)
既存のデータを書き換えられる編集モードへ切り替えます。
// 編集ボタンの OnSelect
EditForm(EditForm1)
編集対象は、フォームの Item プロパティで指定します。関数を実行するだけでは、どのデータを編集するかは決まりません。
6. SubmitForm:フォームの内容を保存する
SubmitForm(フォーム名)
フォームの入力内容を検証し、データソースへ送信します。成功するとフォームの OnSuccess、失敗すると OnFailure が実行されます。
// 保存ボタンの OnSelect
SubmitForm(EditForm1)
SubmitFormは実際のデータを変更します。学習中は、業務で使用中のデータではなく、練習用のデータソースで確認してください。
③ データを探す・並べる
このグループの関数は、ギャラリーの Items プロパティでよく使います。
7. Filter:条件に合う行だけを取り出す
Filter(テーブル, 条件1 [, 条件2, ...])
テーブルから、すべての条件に合うレコードを取り出します。
// エリアが東京の社員だけを表示
Filter(社員一覧, エリア = "東京")
条件を複数書いた場合は、すべての条件に合う行が返ります。
検索欄が空なら全件表示する
検索欄が空のときは全件を表示し、文字が入力されたときだけ絞り込む場合は、IsBlankと ||(または)を組み合わせます。
Filter(
社員一覧,
IsBlank(TextInputSearch.Text) ||
エリア = TextInputSearch.Text
)
- 検索欄が空の場合:
IsBlank(...)がtrueになるため、すべての行を表示する - 検索欄に文字がある場合:エリアが検索文字と完全に一致する行だけを表示する
前方一致で絞り込む場合は、完全一致の条件を StartsWithへ置き換えます。
Filter(
社員一覧,
IsBlank(TextInputSearch.Text) ||
StartsWith(エリア, TextInputSearch.Text)
)
新しいテキスト入力コントロールでは、環境によって .Textではなく .Valueを使用します。プロパティ名でエラーが出た場合は、入力コントロールの候補に表示されるプロパティを確認してください。
8. Search:文字を含む行を検索する
Search(テーブル, 検索文字列, 列1 [, 列2, ...])
指定した列の中に検索文字列が含まれるレコードを返します。検索文字列が空なら、すべてのレコードを返します。
// 氏名列とエリア列を部分一致で検索
Search(社員一覧, TextInputSearch.Text, 氏名, エリア)
現在の構文では、検索対象の列名を通常はダブルクォーテーションで囲みません。古い教材では "氏名" のような表記が残っていることがあります。
9. StartsWith:指定した文字で始まるか調べる
StartsWith(調べる文字列, 先頭の文字列)
文字列が指定した文字で始まる場合は true、始まらない場合は false を返します。
// Title列が検索文字列で始まる行を表示
Filter(申請一覧, StartsWith(Title, TextInputSearch.Text))
Searchは部分一致、StartsWithは前方一致です。接続先によっては、StartsWithのほうが委任しやすい場合があります。
10. Sort:式の結果で並べ替える
Sort(テーブル, 並べ替えの基準 [, 並び順])
1つの列や式を基準に、テーブルを並べ替えます。並び順を省略すると昇順です。
Sort(社員一覧, 氏名, SortOrder.Ascending)
11. SortByColumns:列名を指定して並べ替える
SortByColumns(テーブル, "列名1" [, 並び順1, "列名2", 並び順2, ...])
列名を文字列で指定して並べ替えます。複数の列を順番に指定できるのが特徴です。
SortByColumns(
社員一覧,
"部署", SortOrder.Ascending,
"氏名", SortOrder.Ascending
)
Sortは列や式を直接指定し、SortByColumnsは列名を文字列で指定します。
12. First:テーブルの最初の1行を返す
First(テーブル)
テーブルの最初のレコードを返します。
// 作成日時で新しい順に並べ、最初の1行を取得
First(SortByColumns(申請一覧, "Created", SortOrder.Descending))
「最初」が何を意味するかを明確にしたいときは、先に Sort または SortByColumns で順番を決めます。
13. Last:テーブルの最後の1行を返す
Last(テーブル)
テーブルの最後のレコードを返します。
Last(社員一覧)
注意したいのは、最後の行が必ず最新データとは限らないことです。最新データを取りたい場合は、日時やIDで並べ替えてから First を使うほうが意図を伝えやすくなります。
委任の注意:外部データソースを使う式では、処理をデータソース側へ任せられない場合があります。青い波線が表示された式は、最初の500件または設定した上限までのデータだけで計算され、結果が不完全になる可能性があります。実際のデータソースに合わせて、Microsoftの委任一覧を確認してください。
④ データを追加・更新する
14. Patch:レコードを追加・更新する
Patch(データソース, 基準レコード, 変更内容)
フォームを使わずに、レコードを追加または更新します。
// 新しいレコードを追加
Patch(
申請一覧,
Defaults(申請一覧),
{Title: "新規申請", 状態: "未確認"}
)
// ギャラリーで選択したレコードを更新
Patch(
申請一覧,
Gallery1.Selected,
{状態: "承認"}
)
Patchは実際のデータを変更します。更新対象が正しいか、ボタンを押す前に確認できる画面設計にしておくことが大切です。
15. Defaults:新規レコードの初期値を返す
Defaults(データソース)
データソースの初期値を持つ新規レコードを返します。Patchの第2引数に指定すると、新しい行を追加できます。
Patch(申請一覧, Defaults(申請一覧), {Title: "新規申請"})
16. Blank:空白の値を作る
Blank()
値がない状態を表す空白値を返します。値を消したいときにも使います。
// 選択したレコードの備考を空白にする
Patch(申請一覧, Gallery1.Selected, {備考: Blank()})
17. IsBlank:値が空白か調べる
IsBlank(値)
値が空白または空の文字列 "" なら true を返します。
// 検索欄が空なら全件、入力されていれば絞り込む
If(
IsBlank(TextInputSearch.Text),
社員一覧,
Filter(社員一覧, エリア = TextInputSearch.Text)
)
Blank()は空白値を作る関数、IsBlank(...)は空白かを調べる関数です。空のテーブルを調べる場合は IsEmpty を使います。
⑤ 条件で分ける
18. If:条件によって結果を変える
If(条件, 条件に合うときの結果 [, 合わないときの結果])
条件が true か false かによって、結果や動作を切り替えます。
If(
IsBlank(TextInputName.Text),
Notify("氏名を入力してください", NotificationType.Warning),
SubmitForm(EditForm1)
)
19. Switch:1つの値を複数候補と比べる
Switch(調べる値, 候補1, 結果1 [, 候補2, 結果2, ... [, 既定の結果]])
1つの値を複数の候補と比べ、それぞれに対応する結果を返します。
Switch(
ThisItem.状態.Value,
"未確認", Color.Gray,
"承認", Color.DodgerBlue,
"却下", Color.Red,
Color.Black
)
条件式そのものが複数ある場合は If、1つの値を候補と照合する場合は Switch と考えると選びやすくなります。
⑥ 日付・時刻を扱う
20. Now:現在の日付と時刻を返す
Now()
式が評価された時点の日付と時刻を返します。
// 登録日時の初期値
Now()
21. Today:今日の日付を返す
Today()
時刻を含まない、今日の日付を返します。
// 申請日の初期値
Today()
22. DateTimeValue:文字を日時へ変換する
DateTimeValue(文字列 [, 言語タグ])
日時を表す文字列を、計算や保存に使える日時値へ変換します。
DateTimeValue("2026/09/27 9:00", "ja-JP")
同じ文字列でも、言語・地域によって日付の読み方が変わる場合があります。形式を固定したいときは、言語タグも指定すると意図が明確になります。
23. Hour:日時から「時」を取り出す
Hour(日時)
日時から、0〜23の「時」を数値で返します。
Hour(Now())
24. Minute:日時から「分」を取り出す
Minute(日時)
日時から、0〜59の「分」を数値で返します。
Minute(Now())
⑦ 計算する・文字にする
25. Sum:数値を合計する
Sum(テーブル, 合計する式)
テーブルの各レコードで式を計算し、その合計を返します。
// 明細の金額を合計
Sum(明細, 金額)
26. Int:小さい整数側へ丸める
Int(数値)
数値を、その値以下で最も近い整数へ丸めます。
Int(2.16) // 2
Int(-2.16) // -3
正の数では小数部分を取り除くように見えますが、負の数では -3 のように0から離れる方向へ丸められます。負の数でも小数部分だけを取り除きたい場合は Trunc を使います。
27. Mod:割り算の余りを返す
Mod(割られる数, 割る数)
割り算の余りを返します。
Mod(130, 60) // 10
時間計算では、合計分数から「60で割った余りの分」を求めるときなどに使えます。
28. Text:値を指定した書式の文字にする
Text(値 [, 書式 [, 結果の言語タグ]])
数値や日時を、表示用の文字列に変換します。
Text(ThisItem.出勤時間, "yyyy/mm/dd h:mm", "ja-JP")
Textの結果は文字列です。日時の計算に使う元データは日時型のまま保持し、画面へ表示するときに書式を整えるのが基本です。
⑧ ユーザー情報・お知らせ
29. User:現在のPower Appsユーザー情報を返す
User()
User().FullName
User().Email
現在Power Appsを使用している人の氏名、UPN、画像などを含むレコードを返します。
// ラベルの Text
"ようこそ、" & User().FullName & "さん"
User().Emailが返すのはSMTPメールアドレスではなく、サインインに使うUPNです。メール送信先やデータ照合へ使う場合は、組織の設定と一致するか確認してください。
30. Notify:画面上部へメッセージを表示する
Notify(メッセージ [, 通知の種類 [, 表示時間]])
アプリの画面上部に、成功・エラー・警告・情報などのメッセージを表示します。表示時間はミリ秒で指定します。
Notify(
"データを保存しました",
NotificationType.Success,
3000
)
3000は3秒です。表示時間を省略した場合は10秒、0を指定した場合は自動的に閉じません。
長い式は内側から読む
複数の関数が組み合わされた式は、内側から順番に確認します。
Sort(
Search(社員一覧, TextInputSearch.Text, 氏名, エリア),
氏名,
SortOrder.Ascending
)
この式は、次の順番で動きます。
Searchで、検索文字列を含むレコードを取り出すSortで、検索結果を氏名の昇順に並べ替える- 最終的なテーブルをギャラリーなどへ渡す
ポイントは、内側の関数の戻り値が、外側の関数の引数になることです。
うまく動かないときの確認項目
- 関数名やコントロール名のつづりが正しいか
- カッコの数が合っているか
- 引数の順番と区切り記号が正しいか
- 入力しているプロパティが正しいか
- 列のデータ型と、式が期待する型が合っているか
- データソースへの接続権限や更新権限があるか
- 青い波線が出ている場合、委任できない処理になっていないか
エラーが出たときは、長い式を一度に直そうとせず、内側の関数から短く実行して戻り値を確認してください。
まとめ
- 関数は「何をしたいか」で分類すると探しやすい
- 構文では、引数の数・順番・省略できるかを確認する
Blank()とIsBlank(...)、SortとSortByColumnsなど、似た関数は役割の違いで覚えるFirstやLastを使う前に、テーブルの並び順を確認する- 外部データソースでは、委任によって検索結果が不完全にならないか確認する
- 長い式は、いちばん内側の関数から読む
すべてを暗記する必要はありません。実現したい動きを決めたら、この記事の分類表とMicrosoft公式ドキュメントの構文を確認し、短い式から試してみましょう。


