← 手順一覧へ戻る
Power Automate Desktop文字・日付初心者向け

文字列の一部を取り出す(0始まりの位置・短い入力を確認)

「ABC-12345」の5文字目から5文字を取り出します。位置は0から数え、先に文字数を確認して短い入力は切り出しません。

画面上の名前は、表示言語やバージョンによって異なる場合があります。Desktopの例は、フロー作成時に「Power Fx を有効にする」をオフにした標準構文です。Power Fx対応フローでは式・変数参照・インデックスの書き方が異なります。このページでは変数を %変数名% と表記します。出力変数の名前を入力する欄では、前後の % は付けません。

実行前に確認

  • ローカルの文字処理と画面表示だけの有人練習です。クラウドサービスへの接続は不要です。利用できるライセンスと組織の方針を確認してください。クラウドからの実行・無人実行の利用条件は、この手順とは別です。
  • 9文字以上という条件は範囲外の切り出しを避けるためのものです。管理番号の形式や先頭のABC-、数字だけかどうかは検証しません。10文字以上でも最初の指定範囲だけを取り出します。
  • 接頭辞や区切り位置が変わるデータには、この固定位置の設定をそのまま使わないでください。区切り文字で分ける場合は「文字列を分割・置換する」を参照します。
  • Codeは文字列です。数字に見えても、この例では数値に変換しません。短い入力のElse側やEndの後でCodeを参照せず、前回の値を結果と取り違えないようにします。
  • 練習は半角英数字とハイフンに限定しています。前後の空白も位置に含まれます。絵文字や結合文字など、見た目の文字数が扱いにくい入力を検証した例ではありません。

1使うアクション

  1. アクション 1変数の設定SourceTextに練習用の文字列
  2. アクション 2IfSourceText.Lengthが9以上か確認
  3. アクション 3サブテキストの取得はい:位置4から5文字をCodeへ
  4. アクション 4メッセージを表示はい:Codeを表示
  5. アクション 5Else9文字未満の場合
  6. アクション 6メッセージを表示いいえ:短い入力の注意だけを表示
  7. アクション 7EndIfの終わり。以降でCodeを使わない

図で見る処理のイメージ

概念図

入力は ABC-12345、取り出したい文字は12345です。位置4から5文字を読むには、元の文字列が9文字以上必要です。

位置4は、左から5文字目

上の数字は0始まりの位置。枠で囲んだ5文字を取り出します。

  1. 位置0A
  2. 位置1B
  3. 位置2C
  4. 位置3-
  5. 位置41
  6. 位置52
  7. 位置63
  8. 位置74
  9. 位置85
開始位置 4取得文字数 5Code = 12345

先に確認4 + 5 = 9文字以上あるか

↓ はい・9文字以上

位置4から5文字を取得
Codeを表示10文字以上でも、取り出すのは5文字だけ

↓ いいえ・9文字未満

切り出さず、注意を表示
「9文字未満のため切り出しません」Codeを参照しない
固定位置の概念図です。ハイフンや数字を検索する処理ではありません。実際の設定画面・実行結果ではありません。
結果の例

9文字以上なら、5文字目から5文字を表示します。9文字未満なら注意だけを表示します。

狭い画面では、表を横にスクロールして結果まで確認できます。

SourceTextを差し替えた4件の期待値(実行結果ではありません)
入力文字数表示する内容
A:ABC-12345912345(切り出しを実行)
B:ABC-123489文字未満のため切り出しません
C:ABC-1234561012345(最後の6は含まれない)
D:ABCD-1234510-1234(位置4がハイフン)

架空の半角文字列による説明です。実際のPower Automateフローを実行して確認した結果ではありません。位置と長さの確認であり、番号の形式検証ではありません。

設定と処理を説明する模式図です。実際の設定画面や実行結果のスクリーンショットではありません。

2実際の設定内容

入力する値・操作手順を確認する8ステップの設定と確認方法
  1. 1

    準備:WindowsのPower Automate for desktopで、Power Fxをオフにした新しい練習フローを作ります。ファイル・Excel・外部サービスは使いません。下の4件の確認では、SourceTextだけを差し替え、毎回先頭から手動実行します。

  2. 2

    「変数の設定」で変数名をSourceText、値を ABC-12345 にします。引用符は入力しません。半角英数字と半角ハイフンの9文字です。

  3. 3

    「If」の第1オペランドを %SourceText.Length%、演算子を「以上(>=)」、第2オペランドを数値の 9 にします。Lengthは文字数です。開始位置4+取得文字数5=9文字以上あるかを、切り出す前に確認します。

  4. 4

    Ifの内側に「サブテキストの取得」を置きます。元のテキスト=%SourceText%、開始インデックスの指定方法=「文字の位置」、文字の位置=4、長さの指定方法=「文字数」、文字数=5、出力変数名=Code。「4文字目」ではなく、0から数えた位置4、つまり5文字目からです。取得文字数5は、終了位置5という意味ではありません。

  5. 5

    直後の「メッセージを表示」もIfの内側に置き、タイトル=「切り出した文字」、メッセージ=%Code%、ボタン=OKにします。メッセージの出力変数はResultButtonにします。

  6. 6

    「Else」の内側に別の「メッセージを表示」を置き、タイトル=「文字数を確認」、メッセージ=「9文字未満のため切り出しません」、ボタン=OK、出力変数=NoticeButtonにします。ここでは %Code% を使いません。Endで分岐を閉じ、この練習はそこで終わります。

  7. 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. 8

    エラー時の動作は既定の「フローを停止」を保ち、自動再試行やエラーを無視する設定は追加しません。「開始インデックスまたは長さが範囲外」のエラーなら、Ifの内側に置けているか、元テキスト・位置4・文字数5を確認します。ブレークポイントと変数ペインでSourceText.LengthとCodeを確認できますが、Codeを読むのは切り出しを通った場合だけです。

Microsoft公式ページで確認する

設定を確認できる公式資料