Power Automate Desktopをうまく活用すれば、VBAを覚えるよりも簡単にエクセル操作を自動化することができます
今回はPower Automate Desktop(以降、PAD)でエクセル操作をうまく行う方法を紹介します
目次
ショートカットキーの操作
一般操作
PADのエクセルメニューは実際の操作内容と比べると豊富とは言えません
但し、ショートカットキーをうまく使うことでカバーが可能です
例として列の並び替えを行ってみましょう
下の画像のA列を降順にします
降順にするショートカットキーを確認するため、まずは「Altキー」を押します
すると、キー操作でエクセルを操作できるようになります
そのまま並び替えを行うと「Alt⇒A⇒SD」というショートカットキーであることが分かります
このショートカットキーを「キー送信アクション」に設定します
設定したキー送信前に並び替え範囲上にカーソルを置くことも重要です
これでショートカットキーで並び替えが行われるようになります
SUM関数
SUM関数をPADで操作する場合「=SUM()」とセルに入力する方法があります
実はPADの「キー送信」アクションでも行えます
ショートカットキーでは「Alt⇒Shift⇒=」ですが、PADでは=ではなく「OemMinus」と記述します
変数によるシート名設定
PADでは、操作するシートを選択する際には「アクティブなエクセルワークシートの設定」アクションを使用します
シート名の指定が頻繁に起こるようであれば、フローの最初で変数で指定できるようにしましょう
そうすれば、後でエクセル上でシート名を変更した際にPADの修正が楽になります
繰り返し処理
シート分割/ワークシート関数で余りを計算
下のGIF画像では1シートの内容を指定行数分で区切り、新シートに追加しています
最初はAllシートに18行あります
こちらのAllシートの18行をそれぞれ3行に分けて新規シートを追加することで、結果的に6シート追加されます
仕組みとしては繰り返し処理する行数(行位置)をカウントアップする際に、NO(1,2,3)を別シートに書き込んでいます
そしてMOD関数により3で割った余りを計算しています
つまり、繰り返し処理の際に次のような公式が成り立ちます
余り1(例:1や4)⇒別シートへのコピー開始行
余り3(例:3や7)⇒別シートへのコピー終了行
ですので、次の画像のような条件分岐処理を行えば指定行単位でのシート分割が行えます
上記画像の「intMod」は算出した余りの値です
intModが1の時には、コピー開始行の変数:rowStartに行位置を割り当てます
intModが0の時には、コピー終了行の変数:rowEndに行位置を割り当て、サブフローでシートを追加しコピーを実行します
この処理がそのまま他の業務で使えるとは思いませんが、役に立つと思える点が2つあります
1つはPower Automate DesktopではVBAのようにコード内での計算が行えません
ですので、今回のようにワークシート関数を埋め込んだ別シートで計算するのがとても有効なケースがあるはずです
2点目は、何かと余りを計算するMOD関数は使用機会が多いです
余りを活用すれば、思わぬ形で業務の定型化が行えます
下からの繰り返し処理
繰り返し処理は通常、上の行から行います
実は下から処理を行った方がうまく行くケースも多いです
一番分かりやすいのは、行削除を伴う繰り返し処理を行うケースです
上の画像で列1の値が「a」の場合に行を削除するとします
問題は5行目と6行目です
仮に繰り返し処理を行う際の行位置(行数)を変数:myRowで表現するとします
変数:myRowが5になった際には、行削除が行われます
*2行目が削除されるので、実際には4の時です
ここで、行6にあったaは行5に自動的に繰り上がります
一方、myRowは6になり、行6の処理に移ります
ですので、結果的に6行目(下のGIF画像では最初5行目*)のaが未処理で残ります
*上のGIF画像は2行目が削除された状態から始まっています
上のGIF画像では下のaが削除されてもbとcの下のaが残っているのがよくわかると思います
これが、繰り返し処理を下から行うと問題はなくなります
行位置を表すmyRowが6になった時に行削除行われ、次にmyRowが5になった時にも削除が行われるからです
つまり、行削除を行った時の以降の行の動きと繰り返し処理の方向が一致するからです
実際にフローについて解説します
下から繰り返し処理を行うために「変数を小さくする」アクションをうまく活用します
行位置の初期値は列の最終行にし、繰り返し変数を小さくしていき、変数が2未満になったら終了するようにします
繰り返し処理がうまく行かないケースは、この下からの繰り返し処理もぜひ検討してみてください
コメントを残す