Power Automate Desktop Excel フィルター機能

2023年8月20日

English version.

現状、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」の生成された変数
「Excel ワークシートから読み取り」のパラメーター設定

ループ」の中に「If」を設置して次のようにパラメーター設定します。

項目名設定値備考
最初のオペランド%Price%Excel ワークシートから読み取り」の生成された変数
演算子と等しい(=)
2 番目のオペランドTrue
「If」のパラメーター設定

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

フロー全体像

Power Automate Desktopを効率的に習得したい方へ

当サイトの情報を電子書籍用に読み易く整理したコンテンツを

買い切り950円またはKindle Unlimited (読み放題) で提供中です。

Word-A4サイズ:1,700ページの情報量で

(実際のページ数はデバイスで変わります)

基本的な使い方から各アクションの詳細な使い方、

頻出テクニック、実用例を紹介。(目次

体系的に学びたい方は是非ご検討ください。

アップデートなどの更新事項があれば随時反映しています。(更新履歴

なお購入後に最新版をダウンロードするには

Amazonへの問い合わせが必要です。

関連記事

活用事例集