文字列の一部を取り出す(0始まりの位置・短い入力を確認)
「ABC-12345」の5文字目から5文字を取り出します。位置は0から数え、先に文字数を確認して短い入力は切り出しません。
画面上の名前は、表示言語やバージョンによって異なる場合があります。Desktopの例は、フロー作成時に「Power Fx を有効にする」をオフにした標準構文です。Power Fx対応フローでは式・変数参照・インデックスの書き方が異なります。このページでは変数を %変数名% と表記します。出力変数の名前を入力する欄では、前後の % は付けません。
実行前に確認
- ローカルの文字処理と画面表示だけの有人練習です。クラウドサービスへの接続は不要です。利用できるライセンスと組織の方針を確認してください。クラウドからの実行・無人実行の利用条件は、この手順とは別です。
- 9文字以上という条件は範囲外の切り出しを避けるためのものです。管理番号の形式や先頭のABC-、数字だけかどうかは検証しません。10文字以上でも最初の指定範囲だけを取り出します。
- 接頭辞や区切り位置が変わるデータには、この固定位置の設定をそのまま使わないでください。区切り文字で分ける場合は「文字列を分割・置換する」を参照します。
- Codeは文字列です。数字に見えても、この例では数値に変換しません。短い入力のElse側やEndの後でCodeを参照せず、前回の値を結果と取り違えないようにします。
- 練習は半角英数字とハイフンに限定しています。前後の空白も位置に含まれます。絵文字や結合文字など、見た目の文字数が扱いにくい入力を検証した例ではありません。
1使うアクション
- アクション 1変数の設定SourceTextに練習用の文字列
- アクション 2IfSourceText.Lengthが9以上か確認
- アクション 3サブテキストの取得はい:位置4から5文字をCodeへ
- アクション 4メッセージを表示はい:Codeを表示
- アクション 5Else9文字未満の場合
- アクション 6メッセージを表示いいえ:短い入力の注意だけを表示
- アクション 7EndIfの終わり。以降でCodeを使わない
図で見る処理のイメージ
概念図入力は ABC-12345、取り出したい文字は12345です。位置4から5文字を読むには、元の文字列が9文字以上必要です。
位置4は、左から5文字目
上の数字は0始まりの位置。枠で囲んだ5文字を取り出します。
- 位置0A
- 位置1B
- 位置2C
- 位置3-
- 位置41
- 位置52
- 位置63
- 位置74
- 位置85
先に確認4 + 5 = 9文字以上あるか
↓ はい・9文字以上
位置4から5文字を取得
Codeを表示10文字以上でも、取り出すのは5文字だけ↓ いいえ・9文字未満
切り出さず、注意を表示
「9文字未満のため切り出しません」Codeを参照しない9文字以上なら、5文字目から5文字を表示します。9文字未満なら注意だけを表示します。
狭い画面では、表を横にスクロールして結果まで確認できます。
| 入力 | 文字数 | 表示する内容 |
|---|---|---|
| A:ABC-12345 | 9 | 12345(切り出しを実行) |
| B:ABC-1234 | 8 | 9文字未満のため切り出しません |
| C:ABC-123456 | 10 | 12345(最後の6は含まれない) |
| D:ABCD-12345 | 10 | -1234(位置4がハイフン) |
架空の半角文字列による説明です。実際のPower Automateフローを実行して確認した結果ではありません。位置と長さの確認であり、番号の形式検証ではありません。
設定と処理を説明する模式図です。実際の設定画面や実行結果のスクリーンショットではありません。
2実際の設定内容
入力する値・操作手順を確認する8ステップの設定と確認方法
- 1
準備:WindowsのPower Automate for desktopで、Power Fxをオフにした新しい練習フローを作ります。ファイル・Excel・外部サービスは使いません。下の4件の確認では、SourceTextだけを差し替え、毎回先頭から手動実行します。
- 2
「変数の設定」で変数名をSourceText、値を ABC-12345 にします。引用符は入力しません。半角英数字と半角ハイフンの9文字です。
- 3
「If」の第1オペランドを %SourceText.Length%、演算子を「以上(>=)」、第2オペランドを数値の 9 にします。Lengthは文字数です。開始位置4+取得文字数5=9文字以上あるかを、切り出す前に確認します。
- 4
Ifの内側に「サブテキストの取得」を置きます。元のテキスト=%SourceText%、開始インデックスの指定方法=「文字の位置」、文字の位置=4、長さの指定方法=「文字数」、文字数=5、出力変数名=Code。「4文字目」ではなく、0から数えた位置4、つまり5文字目からです。取得文字数5は、終了位置5という意味ではありません。
- 5
直後の「メッセージを表示」もIfの内側に置き、タイトル=「切り出した文字」、メッセージ=%Code%、ボタン=OKにします。メッセージの出力変数はResultButtonにします。
- 6
「Else」の内側に別の「メッセージを表示」を置き、タイトル=「文字数を確認」、メッセージ=「9文字未満のため切り出しません」、ボタン=OK、出力変数=NoticeButtonにします。ここでは %Code% を使いません。Endで分岐を閉じ、この練習はそこで終わります。
- 7
確認A:ABC-12345 は9文字で、Codeは12345。確認B:ABC-1234 は8文字で、注意だけが表示され、サブテキストの取得は実行されません。確認C:ABC-123456 は10文字でも条件を通り、Codeは12345で最後の6は含まれません。確認D:ABCD-12345 は10文字で、Codeは-1234です。開始位置4はハイフンになり、区切りを探しているわけではないと確認できます。
- 8
エラー時の動作は既定の「フローを停止」を保ち、自動再試行やエラーを無視する設定は追加しません。「開始インデックスまたは長さが範囲外」のエラーなら、Ifの内側に置けているか、元テキスト・位置4・文字数5を確認します。ブレークポイントと変数ペインでSourceText.LengthとCodeを確認できますが、Codeを読むのは切り出しを通った場合だけです。
- 対象環境
- Power Automate for desktop(Windows)
- 更新日
- 2026年10月12日