
Power Appsでは、数値・テキスト・日付・Boolean(true/false)はそれぞれ別の型として厳格に管理されています。型が合わない値を渡すと式がエラーになります。
Power Appsが型に厳しい理由
Power Appsの数式エンジンは、値の種類(型)を常に意識して動いています。Excelなら数値に見えればそのまま計算してくれることが多いですが、Power Appsでは各データの型を厳密に区別します。
テキスト入力コントロールに入力した値は、数字に見えても型はテキスト(Text)です。そのまま計算式に使おうとすると、型の不一致を検知してエラーが出ます。数式バーに赤いアンダーラインが引かれ、マウスを乗せると Expected Number value のようなエラーメッセージが表示されます。

なぜこういう設計になっているかというと、Power Appsはデータベースと接続して動くツールだからです。SharePointの列はそれぞれ一行テキスト・数値・日付と時刻などの型が定義されていますし、その型に合わない値を保存しようとするとPatchが失敗します。型を意識する習慣は、アプリを安定させる上で欠かせません。
型の種類:6種類を把握する
Power Appsで扱う型は主に以下の6種類です。
| 型 | 説明 | 代表的な場所 |
|---|---|---|
| Text(テキスト) | 文字列 | テキスト入力・一行テキスト列・ラベル |
| Number(数値) | 整数・小数 | 数値入力・数値列・計算結果 |
| Date/Time(日付) | 日付・時刻 | 日付入力・日付列・Today() |
| Boolean(真偽値) | true/false | チェックボックス・はい/いいえ列 |
| Record(レコード) | 1行分のデータ | Gallery.Selected・Patch の引数 |
| Table(テーブル) | 複数行のデータ | コレクション・Filter の結果 |
初心者がよくハマるのは、Text・Number・Dateの3種類の間での変換です。特にSharePointのテキスト列に数値っぽい値が入っているケースが多く、私自身も最初の頃は変換が必要だとわかっておらずよく詰まっていました。Record型とTable型は、PatchやFilter関数を使うときに意識することになります。
よくある型ミスマッチのパターン
テキスト列に入った数値を計算したい
SharePointのテキスト列には、設定次第で数字が入ることがあります。それを計算しようとすると型エラーになります。解決策は Value() 関数でテキストを数値に変換することです。
Value(TextInput1.Text) + 100
Value(項目.テキスト列名) * 0.8

Value() はテキストを数値に変換します。変換できない文字列が入っていた場合は実行時エラーになります。不正な入力への対策は IfError(Value(入力値), 0) のように書くと安全です。
数値をラベルやテキストに表示したい
数値をそのままラベルのTextプロパティに渡すと、型の不一致でエラーになります。Text() 関数で文字列に変換します。
Text(100) // "100"
Text(SumResult, "0.00") // 小数点2桁で表示
Text(99.5 / 100, "0%") // パーセント表示
書式文字列を指定することで、表示形式も同時に制御できます。数値列を合計してラベルに表示する場面では Text(Sum(コレクション, 数値列), "#,##0") のように書くと、カンマ区切りで表示されます。書式文字列はExcelと同じ形式が使えるので、Excel経験者はスムーズに理解できます。
日付をテキストとして扱いたい
日付型の値をテキスト連結(&)に使おうとするとエラーになります。Text() 関数で書式文字列を指定して変換します。
"申請日:" & Text(Today(), "yyyy/mm/dd")
"〆切:" & Text(DateValue("2026-05-31"), "yyyy年mm月dd日")

逆に、テキスト形式の日付文字列をDate型として扱いたいときは DateValue() を使います。SharePointの日付列はすでにDate型なので変換不要ですが、テキスト入力から日付を受け取るケースでは必要になります。
DateValue(TextInput1.Text) // "2026/04/13" → Date型
DateAdd(DateValue(TextInput1.Text), 30, TimeUnit.Days) // 30日後を計算
日付の入力はDatePickerコントロールを使うと最初からDate型で受け取れるため、型変換が不要になります。テキスト入力で日付を受け取るよりも、DatePickerを使う設計のほうが式がシンプルになります。
Boolean型の変換
チェックボックスの値はBoolean(true/false)です。これをテキストとして表示したい場合や、文字列のtrueやfalseをBoolean型に変換したい場面があります。
// Boolean → テキスト(条件分岐で対応)
If(Checkbox1.Value, "対象", "対象外")
// テキスト → Boolean
Boolean("true") // true
Boolean("false") // false
Boolean("yes") // true
SharePointのはい/いいえ列はすでにBoolean型なので、条件式では If(項目.はい列, ...) のように直接使えます。変換が必要になるのは、テキスト列に文字列としてtrueが入っているケースや、外部APIから文字列で受け取るケースです。体感的にBoolean変換が必要になる頻度はText・Number・Dateと比べて少ないですが、知っておくと詰まったときに素早く対処できます。
変換関数チートシート
よく使う変換関数をまとめます。この表を手元に置いておくと、エラーが出たときにどの関数を使うか迷わなくなります。
| 変換したい方向 | 関数 | 例 |
|---|---|---|
| Text → Number | Value() | Value("42") → 42 |
| Number → Text | Text() | Text(42) → "42" |
| Number → Text(書式あり) | Text(値, 書式) | Text(3.14, "0.00") → "3.14" |
| Text → Date | DateValue() | DateValue("2026/04/13") → Date |
| Date → Text | Text(日付, "書式") | Text(Today(), "yyyy/mm/dd") → "2026/04/13" |
| Text → Boolean | Boolean() | Boolean("true") → true |
| Boolean → Text | If(値, "はい", "いいえ") | — |
| Number → Text(パーセント) | Text(値, "0%") | Text(0.8, "0%") → "80%" |
Patch関数で型を意識する場面
型変換の知識が最も役立つのは、Patch関数でSharePointリストにデータを書き込む場面です。列の型と渡す値の型が一致していないと、Patchは実行時エラーになります。
特に注意が必要なのは次の2点です。テキスト入力の値を数値列に書き込む場合は Value(TextInput.Text) で変換してから渡します。日付の場合、DatePickerコントロールならDate型なのでそのまま使えますが、テキスト入力で受け取った場合は DateValue() で変換が必要です。
Patch関数で新規レコードを作成するときの列ごとの書き方では、各列型に合わせた値の指定パターンを整理しています。型変換を組み合わせると式が複雑になりますが、それぞれの関数の役割を理解しておくと対処できます。
型が合わないときの確認手順
型エラーが発生したときは、次の手順で確認します。
- エラーメッセージを読む(Expected Text / Expected Number / Incompatible types のいずれか)
- エラーが出ている式で使っている値の型を確認する(コントロールの種類・SharePointの列型)
- 型が合っていない部分に Text / Value / DateValue を挿入して変換する
- 保存して動作確認する

型エラーのメッセージの意味を知っておくと、エラーが出てもどこを直せばいいかがすぐわかります。Power Appsのエラー解決マップでは、型エラーを含むよくあるエラーパターンの全体像を整理しています。型変換だけでなく、エラー対処の引き出しをまとめて増やしておくと開発が格段にスムーズになります。
まとめ
Power Appsの型変換は、最初は面倒に感じるかもしれません。ですが、Value・Text・DateValueの3つを押さえるだけで、日常的な型エラーの大半はカバーできます。
SharePointリストを使って業務アプリを作ると、テキスト列・数値列・日付列を混在して扱う場面が必ず出てきます。そのたびに型変換を意識する癖をつけておくと、Patchエラーや表示のズレに悩まされることが減ります。地道に積み上げていきましょう。