Excelから指定した情報だけ自動で抽出
Power Automate Desktopを使って元のデータから未成年の人だけを抽出し、別のExcelに転記するロボットを作りました。
ロボットの動作はこちらの動画で確認できます
日々の作業の時短を目指す
スーパーマーケット事業の会社で事務職をしているパートのおばさんです。
店舗回り担当のスタッフさんが使う事前データを作成しているのですが、いつも手作業でExcelのリストを作成しています。1店舗分の作業は少ないのですが、200以上の店舗のリストを作成するのに、ひたすら同じ作業を繰り返します。
繰り返し過ぎてマウスをクリックする指が吊りそうです。段々と意識も無の状態になり、無意識に作業していることも・・・無意識でも手は動いている・・・
Power Automate Desktopを使えば作業時間が短縮出来そうです!
今回はいくつかのリストの中で未成年者リストの作成をしたいと思います。
リスト作成の作業工程
データの必要ない部分を削除する
↓
生年月日で新しい順に並び変え
↓
一列挿入して数式DATEDIFで年齢を表示する
↓
未成年とそれ以外を分ける
↓
名前をつけて保存する
この作業を自動化します!
使うツール
Power Automate Desktop
Excel
事前準備
Excelで元のデータと転記するシートを用意します。
作成
Power Automate Desktopでフローを作成していきます。
部署の方に使ってもらって・・・
いつも私が定期的にやっているExcelの編集作業を説明し、この一連の作業が自動化できることを伝えました。
上司のAさん
まずは「いいね。かなりの作業時間短縮になるね」
Excelのマクロみたいだと。
他にもこういうことが出来ないかな~とお話しくださったのは・・・
店舗回りのスタッフさんが行う、報告書に100項目を手作業で入力していく作業があります。店舗を回っているときに入力する項目もありますが、事前に入力していく項目があり、その部分が現在はデータ、リストをコピペしていますが自動化出来ないかとのご意見いただきました。
ベテラン先輩Bさん
「ピボットテーブルと同じことが出来るんだね。今は得意な人がいないからやってないんだけど」
ピボットテーブル??
ちょいと検索してみたら、今回私が作成したものと同じことが出来るみたいですね。
それならと、これが自動化できるといいなぁとBさんが担当している仕事の集計表を見せてくださいました。説明をきくと、作業工程が多くて驚きました。他部署とのやり取りがあるそうで、集計に時間がかからなように出来たら良いですね。
なるほど、こっちのほうが大変そうです。これを自動化したいですね。
それから~とBさんのお話は続きます。
Bさんも店舗回りのスタッフさんが作成している報告書のことに・・・
上司のAさんと同じことをお考えでした。
よろしかったらお試しください
Excel.LaunchExcel.LaunchAndOpenUnderExistingProcess Path: $'''C:\\U○○\\○○\\○○\\○○\\○○)〇〇.xlsx''' Visible: True ReadOnly: False Instance=> ExcelInstance
Excel.GetFirstFreeColumnRow Instance: ExcelInstance FirstFreeColumn=> FirstFreeColumn FirstFreeRow=> FirstFreeRow
Excel.ReadFromExcel.ReadCells Instance: ExcelInstance StartColumn: $'''A''' StartRow: 1 EndColumn: FirstFreeColumn - 1 EndRow: FirstFreeRow - 1 ReadAsText: False FirstLineIsHeader: True RangeValue=> ExcelData
Excel.CloseExcel.Close Instance: ExcelInstance
Excel.LaunchExcel.LaunchAndOpenUnderExistingProcess Path: $'''C:\\○○\\○○\\○○\\○○\\○○.xlsx''' Visible: True ReadOnly: False Instance=> ExcelInstance2
Excel.GetFirstFreeRowOnColumn Instance: ExcelInstance2 Column: $'''A''' FirstFreeRowOnColumn=> FirstFreeRowOnColumn
Excel.SelectCellsFromExcel.SelectCells Instance: ExcelInstance2 StartColumn: $'''A''' StartRow: 2 EndColumn: $'''D''' EndRow: FirstFreeRowOnColumn
MouseAndKeyboard.SendKeys.FocusAndSendKeys TextToSend: $'''{Delete}''' DelayBetweenKeystrokes: 10 SendTextAsHardwareKeys: False
SET NewVar TO 2
LOOP LoopIndex FROM 0 TO ExcelData.RowsCount - 1 STEP 1
IF ExcelData[LoopIndex]['2023/4/2'] < 18 THEN
Excel.WriteToExcel.WriteCell Instance: ExcelInstance2 Value: ExcelData[LoopIndex]['従業員番号'] Column: $'''A''' Row: NewVar
Excel.WriteToExcel.WriteCell Instance: ExcelInstance2 Value: ExcelData[LoopIndex]['従業員名'] Column: $'''B''' Row: NewVar
Excel.WriteToExcel.WriteCell Instance: ExcelInstance2 Value: ExcelData[LoopIndex]['生年月日'] Column: $'''C''' Row: NewVar
Excel.WriteToExcel.WriteCell Instance: ExcelInstance2 Value: ExcelData[LoopIndex]['2023/4/2'] Column: $'''D''' Row: NewVar
SET NewVar TO NewVar + 1
参考記事
参考にさせていただいたのは、U-ROOmさんの記事です。モー娘。のメンバーリストでの説明で、入りやすく分かりやすかったです。大変参考になりました。ありがとうございました。
最後に
今回作成したものは私が担当している仕事の時間短縮ができるものでしたが、Excelの編集作業は部署の皆さんがやっている作業です。
実際に作成したものを見てもらうと、前回困りごとをうかがったときには聞き出せなかったことが聞けました。
デジタル化の研修に参加したことでやるべきことが分かりました。具体的に必要なものが見えてきました。
部署で求められているものを、部署の皆さんが楽になれるものを作成していきましょうと。それが組織の業務改善の第一歩ですね。報告書の自動化まで頑張ります!
最後まで読んでいただきありがとうございました。