Power Automate Desktop Excel フィルター機能
現状、Excelのフィルター操作をするアクションは存在しないため、
UI操作などを利用して実現する必要があります。
手順
フィルター設定
Robin言語(コピー&ペースト用)
UI設定は削除しています。
Excel.LaunchExcel.LaunchAndOpenUnderExistingProcess Path: $'''C:\\Test\\Filter.xlsx''' Visible: True ReadOnly: False Instance=> ExcelInstance
Excel.SetActiveWorksheet.ActivateWorksheetByName Instance: ExcelInstance Name: $'''Sheet1'''
Excel.SelectCellsFromExcel.SelectCells Instance: ExcelInstance StartColumn: 1 StartRow: 1 EndColumn: 3 EndRow: 6
UIAutomation.Click Element: appmask['Window \'Filter.xlsx - Excel\'']['Tab Item \'データ\''] ClickType: UIAutomation.ClickType.LeftClick MousePositionRelativeToElement: UIAutomation.RectangleEdgePoint.MiddleCenter OffsetX: 0 OffsetY: 0
UIAutomation.Click Element: appmask['Window \'Filter.xlsx - Excel\'']['Button \'フィルター\''] ClickType: UIAutomation.ClickType.LeftClick MousePositionRelativeToElement: UIAutomation.RectangleEdgePoint.MiddleCenter OffsetX: 0 OffsetY: 0
フロー作成
「Excelの起動」を設置して対象のファイルを開きます。


「アクティブなExcelワークシートの設定」で対象のシートを指定します。


「Excel ワークシート内のセルを選択」でフィルター設定する範囲を指定します。
サンプルではA1~C6の範囲を指定します。




「ウィンドウのUI要素をクリックする」でメニューの中から「データ」をクリックする設定をします。


「ウィンドウのUI要素をクリックする」でフィルターをクリックする設定をします。


このフローを実行すると指定範囲にフィルターが設定されます。


フィルター条件設定
Robin言語(コピー&ペースト用)
UI設定は削除しています。
Excel.LaunchExcel.LaunchAndOpenUnderExistingProcess Path: $'''C:\\Test\\Filter.xlsx''' Visible: True ReadOnly: False Instance=> ExcelInstance
Excel.SetActiveWorksheet.ActivateWorksheetByName Instance: ExcelInstance Name: $'''Sheet1'''
UIAutomation.Click Element: appmask['Window \'Filter.xlsx - Excel\'']['MenuItem: フィルターが適用されないドロップダウンボタン'] ClickType: UIAutomation.ClickType.LeftClick MousePositionRelativeToElement: UIAutomation.RectangleEdgePoint.MiddleCenter OffsetX: 0 OffsetY: 0
UIAutomation.SelectMenuOption Control: appmask['Window \'Filter.xlsx - Excel\'']['MenuItem: 数値フィルター → 数値フィルター']
UIAutomation.Click Element: appmask['Window \'Filter.xlsx - Excel\'']['MenuItem: 数値フィルター → 指定の範囲内...'] ClickType: UIAutomation.ClickType.LeftClick MousePositionRelativeToElement: UIAutomation.RectangleEdgePoint.MiddleCenter OffsetX: 0 OffsetY: 0
UIAutomation.PopulateTextField TextField: appmask['Window \'Filter.xlsx - Excel\'']['Pane \'EDTBX\''] Text: 200 Mode: UIAutomation.PopulateTextMode.Replace ClickType: UIAutomation.PopulateMouseClickType.SingleClick
UIAutomation.PopulateTextField TextField: appmask['Window \'Filter.xlsx - Excel\'']['Pane \'EDTBX\' 2'] Text: 400 Mode: UIAutomation.PopulateTextMode.Replace ClickType: UIAutomation.PopulateMouseClickType.SingleClick
UIAutomation.PressButton Button: appmask['Window \'Filter.xlsx - Excel\'']['Button \'OK\'']
フロー作成
「Excelの起動」を設置して対象のファイルを開きます。


「アクティブなExcelワークシートの設定」で対象のシートを指定します。


「ウィンドウのUI要素をクリックする」で対象列のフィルターを選択します。


「ウィンドウ内のメニューオプションを選択する」で利用するフィルターを選択します。


「ウィンドウのUI要素をクリックする」で設定する条件の種類をクリックします。


「ウィンドウ内のテキスト フィールドに入力する」で条件とする値を設定します。


「ウィンドウ内のボタンを押す」でOKボタンを押します。


このフローを実行するとフィルタが実行されます。


フィルター機能を利用しない別解
Excelブック上でフィルタリングされた状態で残したいわけでなく、
特定の条件で変数として取り込む場合や、
何らかのアクションを行いたい場合は、
フィルター機能を利用しないフローの方が簡単で効率が良い場合があります。
Robin言語(コピー&ペースト用)
Excel.LaunchExcel.LaunchAndOpenUnderExistingProcess Path: $'''C:\\Test\\Filter.xlsx''' Visible: True ReadOnly: False Instance=> ExcelInstance
Excel.SetActiveWorksheet.ActivateWorksheetByName Instance: ExcelInstance Name: $'''Sheet1'''
Excel.GetFirstFreeColumnRow Instance: ExcelInstance FirstFreeColumn=> FirstFreeColumn FirstFreeRow=> FirstFreeRow
LOOP LoopIndex FROM 2 TO FirstFreeRow - 1 STEP 1
Excel.ReadFromExcel.ReadCell Instance: ExcelInstance StartColumn: 3 StartRow: LoopIndex ReadAsText: False CellValue=> Price
IF (200 <= Price AND Price <= 400) = $'''True''' THEN
Display.ShowMessageDialog.ShowMessage Message: Price Icon: Display.Icon.None Buttons: Display.Buttons.OK DefaultButton: Display.DefaultButton.Button1 IsTopMost: False ButtonPressed=> ButtonPressed
END
END
フロー作成
「Excelの起動」を設置して対象のファイルを開きます。


「アクティブなExcelワークシートの設定」で対象のシートを指定します。


「Excel ワークシートから最初の空の列や行を取得」で最終行(%FirstFreeRow%)を取得します。


「ループ」を設置して次のように設定します。
| 項目名 | 設定値 | 備考 |
|---|---|---|
| 開始値 | 2 | データの開始行 |
| 終了 | %FirstFreeRow - 1% | 「Excel ワークシートから最初の空の列や行を取得」の生成された変数 |
| 増分 | 1 |


「ループ」の中に「Excel ワークシートから読み取り」で条件とする列の値を読み取ります。
生成された変数にはPriceという名前を付けています。
| 項目名 | 設定値 | 備考 |
|---|---|---|
| Excel インスタンス | %ExcelInstance% | 「Excel の起動」の生成された変数 |
| 取得 | 単一セルの値 | |
| 先頭列 | 3 | 条件に利用する列数 |
| 先頭行 | %LoopIndex% | 「Loop」の生成された変数 |


「ループ」の中に「If」を設置して次のようにパラメーター設定します。
| 項目名 | 設定値 | 備考 |
|---|---|---|
| 最初のオペランド | %Price% | Excel ワークシートから読み取り」の生成された変数 |
| 演算子 | と等しい(=) | |
| 2 番目のオペランド | True |


「If」の中に条件に合致する場合のアクションを設置します。


Power Automate Desktopを「最短」で習得したい方へ
「Webで情報を探す時間がもったいない」と感じていませんか
当サイトの人気記事を体系的に整理し、一冊の電子書籍にまとめました 。


ページをめくるだけで、基礎から応用まで階段を登るようにスキルアップできます。
オフラインでも読めるため、通勤時間や移動中の学習にも最適です。
【本書で学べること】
- 基本操作とフローの作成手順
- Excel、Outlook、Webブラウザの自動化 * 実務で必須のエラー処理と頻出テクニック
Kindle Unlimited会員なら追加料金なし(0円)でお読みいただけます。