- プログラミングは分からないけど自動化したい
- PowerAutomateの使い方がイマイチ分からない
- 配列をソートしたい
無料ツールでさらにノンプログラミングで自動化ができるならぜひやってみたい!
この記事では、そんな方に向けて配列をソートする方法を3ステップで説明します。
- 配列をソートするフロー
- ソートのやり方
- フローを作る
この記事を読めば、フローを使ったソート方法が分かるようになります。
まだPowerAutomateを使った事が無いという方はこちらの記事を参考にしてください。
PowerAutomateはブラウザで操作するのでインストール無しで利用できます。Windows10ではないMacユーザも自由に使えます。
配列をソートするフロー
ソートするフロー
フローの内容は後で説明するので、このフローで動くんだ。くらいで見ておいてください。
(1)ソート前
日付がバラバラで入っています。
(2)昇順ソート後
古い日付から新しい日付の順番に並び替えされました。
(3)降順ソート後
新しい日付から古い日付の順番に並び替えされました。
条件を1箇所変えるだけで昇順・降順どちらもできます。
ソートのやり方
PowerAutomateにはソートするアクションや、関数がありません。
なので今回はバブルソートと呼ばれるアルゴリズムを参考にフローを作成しました。
バブルソート(英: bubble sort)は、隣り合う要素の大小を比較しながら整列させるソートアルゴリズム。
https://ja.wikipedia.org/
ソートの動きを簡単に説明します。
日付を昇順(小さい順)にソートする動き
①2つを比較
2022/7/15
2022/7/13 ←小さい
2022/7/14
2022/7/12
②小さいほうを新しい配列に入れる
2022/7/13
③2つを比較
2022/7/15
2022/7/14 ←小さい
2022/7/12
④小さいほうを新しい配列に入れる
2022/7/13
2022/7/14
⑤2つを比較
2022/7/15
2022/7/12 ←小さい
⑥小さいほうを新しい配列に入れる
2022/7/13
2022/7/14
2022/7/12
⑦1つ残る
2022/7/15
⑧残った1つを新しい配列に入れる
2022/7/13
2022/7/14
2022/7/12
2022/7/15
①~⑧が1セットです。最後にできた新しい配列を使い①から繰り返します。
繰り返す回数は配列に入っているデータの個数です。この例の場合は4回繰り返すとソートが完了します。
ここ分からなければ、読み飛ばしてOK!
フローを作る
これから作るフローです。
複雑なのでパーツ毎に分けて作成していきます。
- 変数を初期化
- 1つめのループ
- 2つめのループ:はいの場合
- 2つめのループ:いいえの場合
今回使うアクションは6種類です。
- データ操作:作成
- 変数:変数を初期化する
- 変数:変数の設定
- 変数:配列変数に追加
- コントロール:Apply to each
- コントロール:条件
使い方は作りながら見ていきましょう。それではフローを作っていきます。
まだ画面を開いていない方はMicrosoftの公式サイトからPowerAutomateを開いてください。
画面左にある作成から「インスタントクラウドフロー」を選択。
次の画面で「手動でフローをトリガーします」を選んで作成します。
(1)変数を初期化
4つ続いている「変数の初期化」のアクションを設定します。
新しいステップから変数の「変数を初期化する」を4回選択します。
1つめ:変数を初期化する
ソートする配列を準備します。
アクションの名前を「ソートする配列」に変更、3か所設定。
※アクションの名前は「…」にある名前の変更を押して下さい。
名前:日付リスト
種類:アレイ
値 :[“2022/7/15″,”2022/7/13″,”2022/7/14″,”2022/7/12”]
※画像のようにスペースや改行する必要はありません。
2つめ:変数を初期化する
別の変数の値を消す為に使います。
アクションの名前を「空白」に変更、3か所設定。
名前:空白
種類:文字列
値 :※何も入力しません。
3つめ:変数を初期化する
2つのデータを比較する為に前のデータを入れておく箱です。
アクションの名前を「比較データ」に変更、3か所設定。
名前:比較1
種類:文字列
値 :※何も入力しません。
4つめ:変数を初期化する
比較したデータを入れる箱です。
アクションの名前を「ソート処理用配列」に変更、3か所設定。
名前:ソート処理用配列
種類:アレイ
値 :動的なコンテンツの「日付リスト」を選択
(2)1つめのループ
ここでは配列を指定してそのデータ数だけ繰り返すようにします。
フローの中に2つめのループがありますが、まずは1番下の「余ったデータを入れる」まで作ります。
新しいステップでコントロールの「Apply to each」を選択。
動的なコンテンツにある「日付リスト」を選択。
「日付リスト」のデータ数だけ2つめのループを実行させます。
新しいステップで変数の「変数の設定」を選択。
アクションの名前を「比較を空にする」に変更、2か所設定。
名前:比較1
値 :動的なコンテンツの「空白」を選択
比較1は2つめのループでデータを入れて使います。ループに入る前に綺麗にしておきます。
新しいステップでコントロールの「Apply to each」を選択。
動的なコンテンツにある「ソート処理用配列」を選択。
※この中のフローは後で作ります。
新しいステップでデータ操作の「作成」を選択。
※「アクションの追加」ではなく、その下にある「新しいステップ」を選んでください。
アクションの名前を「余ったデータを入れる」に変更、2か所設定。
名前:ソート処理用配列
値 :動的なコンテンツの「比較1」を選択
ループ(Apply to each 2)の中の比較で選ばれなかったデータを配列に入れます。
(3)2つめのループ:はいの場合
2つめのループの中の「はいの場合」まで作成します。
このループでは比較をしますが、1番目のデータは比較対象がありません。2番目になってようやく1番目と比較ができるからです。
ここでは配列の1番目かどうか判断して、1番目なら比較1にデータを入れます。また比較結果を入れる箱を空にします。
「はいの場合」は、1番最初のデータだった場合の処理になります。
アクションの追加でコントロールの「条件」を選択。
3つ設定します。
左:式へ length(variables(‘比較1’))
中:次の値に等しい
右:0
この式は「比較1」が空だった場合、「はい」になります。
lengthは文字数を返す関数なので、0になれば空だと分かります。
新しいステップで変数の「変数の設定」を選択。
アクションの名前を「比較にデータを入れる(1番目)」に変更、2か所設定します。
名前:比較1
値 :Apply to each 2の「現在のアイテム」
アクションの追加で変数の「配列変数に追加」を選択。
アクションの名前を「比較にデータを入れる(1番目)」に変更、2か所設定します。
名前:ソート処理用配列
値 :[]
[]は配列を空にします。
次が最後。フロー完成は目の前です!
(4)2つめのループ:いいえの場合
2つめのループの中の「いいえの場合」まで作成します。
ここでは2つのデータを比較して(昇順であれば)小さい方を配列に入れます。
そして、大きい方は次の比較で使うため比較1へ入れておきます。
アクションの追加でコントロールの「条件」を選択。
アクションの名前を「比較1<=現在のアイテム(昇順)」に変更、3か所設定します。
左:比較1
中:次の値以下 ※昇順の場合
右:動的なコンテンツのApply to each2の「現在のアイテム」
降順にしたい場合は「中:次の値以上」にします。
「はいの場合」にあるアクションの追加から変数の「配列変数に追加」を選ぶ。
アクションの名前を「配列変数に追加」に変更、2か所設定します。
名前:ソート処理用配列
値 :比較1
アクションの追加から変数の「変数の設定」を選択。
アクションの名前を「比較にデータを入れる(2番目以降)」に変更、2か所設定します。
名前:比較1
値 :動的なコンテンツのApply to each2の「現在のアイテム」
「いいえの場合」にあるアクションの追加から変数の「配列変数に追加」を選ぶ。
アクションの名前を「配列変数に追加3」に変更、2か所設定します。
名前:ソート処理用配列
値 :動的なコンテンツのApply to each2の「現在のアイテム」
フローの1番下の新しいステップからデータ操作の「作成」を選択。
動的コンテンツから「ソート処理用配列」を選択。
フローはこれで完成です。お疲れ様でした。
完成したフロー全体像
フローが複雑なので間違えていないか確認してください。
まとめ
配列をソートする方法を3ステップで説明しました。
- 配列をソートするフロー
- ソートする仕組み
- フローを作る
PowerAutomateには配列をソートするアクションはありません。今回はバブルソートと呼ばれる手法をフローで作成してソートを実現しました。処理によってソートしたい場面はでてくると思うので覚えておきましょう。
PowerAutomateのおすすめ記事
人気ページ
Apply to eachの使い方
アレイのフィルター処理の使い方
日付関数の使い方
エラーを無視する方法
メールの内容をExcelへ転記
メール本文から名前を抽出
>>PowerAutomateの記事一覧を見る<<
お気に入り必須!公式ページ
Microsoft Power Automate
式関数のリファレンス
コネクタのリファレンス
Excel Online (Business)のリファレンス