Power Automate Desktop(PAD)でフローを作成する際、条件に応じて処理を分ける「条件分岐」は必須の知識です。適切に条件分岐を設定することで、効率的な自動化が可能になります。この記事では、If文・Switch文の基本から評価式の詳細、倍数の判定方法まで 詳しく解説します。
条件分岐とは?
条件分岐とは、ある条件を満たす場合に特定の処理を実行し、満たさない場合は別の処理を実行する仕組み です。
例えば、次のようなケースで使用します。
- ユーザーの入力値が100以上なら「合格」と表示、それ未満なら「不合格」と表示
- 現在の曜日が「月曜」ならA処理、「火曜」ならB処理を実行
- 数値が偶数か奇数かを判定し、それぞれ異なる処理を実行
PADでは、「条件分岐(If)」や「Switch」アクションを使って条件を設定できます。
If文を使ってみよう
If文とは?
If文は、最も基本的な条件分岐の方法です。
基本の構文
If (条件) Then
〇〇の処理
Else
△△の処理
End If
例1:入力値が100以上かどうか判定する
- 「メッセージを表示」アクションで、ユーザーに数値を入力させる
- 「条件分岐(If)」アクションを追加
- 条件を設定:「入力値 >= 100」
- 100以上なら「合格」、それ以外なら「不合格」を表示
If %入力値% >= 100 Then
メッセージを表示 ("合格")
Else
メッセージを表示 ("不合格")
End If
このIf文により、100以上なら「合格」、それ以外なら「不合格」 と表示されます。
Ifの中のIf(ネスト)
Ifの中にIfを入れる(ネスト)
If文の中にさらにIf文を入れることで、より細かい条件分岐が可能です。
例2:入力値が100以上かつ200以下なら「範囲内」、それ以外は「範囲外」
If %入力値% >= 100 Then
If %入力値% <= 200 Then
メッセージを表示 ("範囲内")
Else
メッセージを表示 ("200を超えています")
End If
Else
メッセージを表示 ("100未満です")
End If
IF文のネストはなるべく避ける
ネストのデメリット
- コードが読みにくくなる(複雑な条件の場合、理解しづらい)
- 処理が増えるとフローが重くなる
ネストを避ける方法
- 条件をシンプルにする
- 「ElseIf」を活用する
- Switch文を使う(後述)
例3:ElseIf を使って、ネストを減らす
If %入力値% < 100 Then
メッセージを表示 ("100未満です")
ElseIf %入力値% <= 200 Then
メッセージを表示 ("範囲内")
Else
メッセージを表示 ("200を超えています")
End If
こうすることで、シンプルな構造 になり、可読性が向上します。
Switch文を使ってみよう
Switch文とは?
Switch文は、1つの変数に対して、複数のケースを比較し、それに応じた処理を実行する方法 です。
If文とSwitch文の違い
- If文 → 条件を細かく設定する場合(数値の範囲判定など)に向いている。
- Switch文 → 特定の値ごとの処理を分ける のに適している。(例:曜日判定など)
Switch文の使い方
例4:曜日によって異なるメッセージを表示する
Switch (%曜日%)
Case "月曜日":
メッセージを表示 ("今日は月曜日です")
Case "火曜日":
メッセージを表示 ("今日は火曜日です")
Case "水曜日":
メッセージを表示 ("今日は水曜日です")
Default:
メッセージを表示 ("その他の日です")
End Switch
このSwitch文では、変数「曜日」の値に応じてメッセージを切り替えています。
評価式をもう少し詳しく
条件分岐を使いこなすには、評価式(条件の書き方)を理解することが重要です。
評価式の演算子
| 演算子 | 意味 | 例 | 結果 |
|---|---|---|---|
= | 等しい | %X% = 10 | Xが10ならTrue |
<> | 等しくない | %X% <> 10 | Xが10でないならTrue |
> | より大きい | %X% > 5 | Xが5より大きいならTrue |
< | より小さい | %X% < 5 | Xが5より小さいならTrue |
>= | 以上 | %X% >= 5 | Xが5以上ならTrue |
<= | 以下 | %X% <= 5 | Xが5以下ならTrue |
AND | 両方の条件を満たす | %X% > 5 AND %Y% < 10 | Xが5より大きく、Yが10未満ならTrue |
OR | どちらかの条件を満たす | %X% > 5 OR %Y% < 10 | Xが5より大きい、またはYが10未満ならTrue |
倍数の判定
数値が特定の倍数かどうかを判定する
倍数の判定には、「剰余演算子(MOD)」 を使用します。
例5:数値が3の倍数かどうか判定
If %入力値% Mod 3 = 0 Then
メッセージを表示 ("3の倍数です")
Else
メッセージを表示 ("3の倍数ではありません")
End If
この処理では、入力値を3で割った余りが0なら「3の倍数」と判定します。
応用:3と5の倍数を判定(FizzBuzz)
If %入力値% Mod 3 = 0 AND %入力値% Mod 5 = 0 Then
メッセージを表示 ("FizzBuzz")
ElseIf %入力値% Mod 3 = 0 Then
メッセージを表示 ("Fizz")
ElseIf %入力値% Mod 5 = 0 Then
メッセージを表示 ("Buzz")
Else
メッセージを表示 (%入力値%)
End If
このように、条件分岐を駆使することで、さまざまな状況に対応できます。
よくある質問(FAQ)
Q1. If文とSwitch文の使い分けは?
A. 条件が「範囲」ならIf文、特定の「値」ならSwitch文 を使うのが一般的です。
| 条件 | 推奨される方法 | 例 |
|---|---|---|
| 数値が100以上かどうか判定 | If文 | %入力値% >= 100 |
| 曜日によって処理を変える | Switch文 | "月曜日" のとき〇〇" |
| 変数が「A」か「B」かで分岐 | Switch文 | "A" または "B" |
| 変数が0以上かつ50以下 | If文 | %入力値% >= 0 AND %入力値% <= 50 |
Q2. Ifの条件を複数組み合わせるには?
A. AND と OR を使って複数の条件を設定できます。
If %年齢% >= 18 AND %年齢% < 65 Then
メッセージを表示 ("対象年齢です")
Else
メッセージを表示 ("対象外です")
End If
この場合、「18歳以上かつ65歳未満」の場合に「対象年齢」と表示されます。
Q3. If文を使わずに倍数の判定をする方法は?
A. 変数に数値を格納し、Switch文を使うことで倍数の判定ができます。
Switch (%入力値% Mod 3)
Case 0:
メッセージを表示 ("3の倍数です")
Default:
メッセージを表示 ("3の倍数ではありません")
End Switch
この方法では、If文を使わずに3の倍数を判定 できます。
Q4. Switch文で「範囲」を指定することはできる?
A. Switch文は基本的に「特定の値」のみに対応 しており、数値の範囲(例:100以上)を判定する場合はIf文を使うのが一般的です。
If %入力値% >= 100 Then
メッセージを表示 ("100以上")
Else
メッセージを表示 ("100未満")
End If
Q5. ElseIfを何回も使うと処理が遅くなる?
A. 条件が増えると処理時間が増えますが、一般的なフローでは問題になりません。ただし、過度なネスト(入れ子)や無駄な判定を避けることが重要 です。
改善例(無駄な判定を削減)
❌ 悪い例(冗長な条件分岐)
If %値% = "A" Then
メッセージを表示 ("Aです")
Else
If %値% = "B" Then
メッセージを表示 ("Bです")
Else
If %値% = "C" Then
メッセージを表示 ("Cです")
Else
メッセージを表示 ("その他です")
End If
End If
End If
✅ 良い例(Switch文を使う)
Switch (%値%)
Case "A":
メッセージを表示 ("Aです")
Case "B":
メッセージを表示 ("Bです")
Case "C":
メッセージを表示 ("Cです")
Default:
メッセージを表示 ("その他です")
End Switch
このように Switch文を使うとシンプルで可読性が向上 します。
Q6. If文で使える「評価式」の便利な書き方は?
A. 条件をコンパクトに書くことで、コードを短縮できます。
例1:偶数・奇数の判定
If %数値% Mod 2 = 0 Then
メッセージを表示 ("偶数")
Else
メッセージを表示 ("奇数")
End If
例2:文字列の一部を判定(大文字・小文字を無視)
If ToLower(%文字列%) = "test" Then
メッセージを表示 ("一致しました")
End If
ToLower(%文字列%) を使うことで、大文字・小文字の違いを無視できます。
Q7. If文の条件に「NOT」を使うことはできる?
A. NOT を使うことで、条件の逆を判定できます。
例3:入力値が100ではない場合の処理
If NOT (%入力値% = 100) Then
メッセージを表示 ("100ではありません")
End If
この場合、入力値が100でない場合にメッセージを表示 します。
