とにかく動かすPAD – データテーブルから特定の行を抽出する方法

データベースでテーブルから条件に合致するレコードだけ抽出するという場面は多いです。
PAD(Power Automate Desktop)でも、データテーブル(Excel)から条件に合致する行を抽出したいことはあります。
しかし、そのものずばりのアクションがありません。
一応、成功した方法をメモしておきます。

やりたいこと

次のようなCSVから都道府県が「千葉県」の行だけを抽出します。

person.csv
郵便番号,都道府県,姓(漢字),名(漢字)
744-0050,山口県,田中,知哉
292-0040,千葉県,目黒,孝行
962-0029,福島県,柴田,麻衣子
252-0240,神奈川県,飯山,将
289-2129,千葉県,山本,裕子
981-1563,宮城県,山本,愛美
343-0092,埼玉県,岩田,花音
969-6187,福島県,渡瀬,美穂
906-0029,沖縄県,川上,忍
680-0026,鳥取県,中嶋,雄一

一行ずつチェックする方法

一行ずつチェックして合致したら新たなデータテーブルに挿入していく方法です。
うまくいきますが異常に処理が遅いです。

テクニックとしては、新たなデータテーブルを作るときに「新しいデータテーブルを作成する」アクションを使わず、「変数の設定」アクションを使います。
この方が圧倒的に楽です。

フロー

◎CSVファイルから読み取る
ファイルパス:person.csv
エンコード:システムの規定値※S-JISの場合。
最初の行に列名が含まれています:オン
生成された変数:CSVTable(Datatable)

◎変数の設定
変数:NewTable
値:%{ ^[‘郵便番号’, ‘都道府県’, ‘姓(漢字)’, ‘名(漢字)’] }%

▼For each
反復処理を行う値:%CSVTable%
保存先:CurrentItem

▼If
最初のオペランド:%CurrentItem[‘都道府県’]%
演算子:と等しい
2番目のオペランド:千葉県

◎行をデータテーブルに挿入する
データテーブル:%NewTable%
挿入場所:データテーブルの末尾
%CurrentItem%

▲End

▲End

結果

NewTableは次のようになります。

検索した結果を反映する方法

データテーブル内を検索するアクションを使います。
合致する行を返してくれればいいのですが、そうはならず、合致する「セル」を返します。

DataTableMatchesに次のように格納されます。1行目と4行目が該当するという意味です。

#,Row,Column
0,1,1
1,4,1

フロー

◎CSVファイルから読み取る
ファイルパス:person.csv
エンコード:システムの規定値※S-JISの場合。
最初の行に列名が含まれています:オン
生成された変数:CSVTable(Datatable)

◎変数の設定
変数:NewTable
値:%{ ^[‘郵便番号’, ‘都道府県’, ‘姓(漢字)’, ‘名(漢字)’] }%

◎データテーブル内で検索または置換する
データテーブル:%CSVTable%
検索モード:検索
すべての一致:オン
検索するテキスト:千葉県
セルの内容が完全に一致する:オン
検索条件:列の場合
列のインデックスまたは名前:都道府県
生成された変数:DataTableMatches

▼For each
反復処理を行う値:%DataTableMatches%
保存先:CurrentItem

◎テキストを数値に変換
変換するテキスト:%CurrentItem[‘Row’]%
生成された変数:TextAsNumber

◎行をデータテーブルに挿入する
データテーブル:%NewTable%
挿入場所:データテーブルの末尾
新しい値:%CSVTable[TextAsNumber]%

▲End

コメント

タイトルとURLをコピーしました