この記事では、データテーブルから特定行のみを抽出する方法を紹介します。
データテーブルとは
変数の中に複数の値が格納されているデータ型で、プログラミング用語では 2次元配列 と呼ばれます。
似たようなデータ型として リスト型 がありますが、データテーブルは以下の様に列が2つ以上ある点が特徴です。
データテーブル型 は主に以下のアクションで変数に取得されます。
- 新しいデータ テーブルを作成する
- CSV ファイルから読み取る
- Excel ワークシートから読み取る
- ウィンドウからデータを抽出する
- Webページからデータを抽出する
- PDF からテーブルを抽出する
テーブル内の値を指定する場合は、 変数名[行番号][列番号] の形式で指定します。
行番号、列番号は 0 から始まる点に注意しましょう。
上記、%ExcelData%を例とした場合、「山田次郎」の値を使用する際は、「 %ExcelData[1][1]% 」と入力して使用します。
データテーブルから特定行のみを抽出する
データテーブルから特定の行のみ抽出したい、特定の条件を満たす行のみを残したデータテーブルをしたい、といった操作は、アクション単体では行えません。
例えば、以下のデータテーブルから Name が「田中太郎」かつ、同姓同名を考慮し Code が「10001」の行のみを取得したい、といった状況です。
その場合、以下のような操作を行うことで処理可能です。
- 一度Excelに特定行のみを出力し、読み込み直す
- 条件を満たさない行のみを削除する
順番に紹介していきます。
Excelに出力し読み込み直す
対象としたい行のデータのみを、一度空のExcelに出力し読み直すことで、特定行のみを抽出することができます。
手順としては以下となります。
①データの取得
共通の処理ですが、まずは元となるデータを取得する必要があります。
Webページやアプリケーション、Excelファイル等から、対象となるデータテーブルを取得しましょう。
②空のExcelを起動
特定のデータのみを取得するため、新たに空のExcelを起動します。
③For each アクションと If アクションでデータテーブルのデータを識別
For each アクションはループアクションの一つで、データテーブルから1行ずつデータを取得するアクションです。
If アクションは条件分岐のアクションで、特定の条件を満たす場合のみ処理を行うことができます。
これらを組み合わせることで、データテーブルの特定の条件を満たすデータのみを取得できます。
④空のExcelに取得したデータを書き込む
③で取得した特定のデータを、Excelワークシートに書き込む アクションで空のExcelに書き込みます。
なお、データが複数行存在する場合は、Excel ワークシートから列における最初の空の行を取得 アクションを使用することで、次の行に書き込むことが可能です。
⑤作成したデータを取得する
④で書き込んだExcelから、Excel ワークシートから読み取る アクションを使用し、データを取得します。
これで特定行のみを抽出したデータテーブルを取得できます。
これでフローは完成です。
実行すると、以下の様に対象のデータテーブルから特定の行のみを抽出できます。
条件を満たさない行のみを削除する
対象としたい行のみをデータテーブルから削除することで、Excelに一度吐き出す手間なく特定行のみを抽出することができます。
手順としては以下となります。
①データの取得
共通の処理ですが、まずは元となるデータを取得する必要があります。
Webページやアプリケーション、Excelファイル等から、対象となるデータテーブルを取得しましょう。
②ループカウント用の変数を作成
後々、データテーブルの行を指定するために現在のループ回数を取得する必要があるため、カウント用の変数を作成します。
③For each アクションと If アクションでデータテーブルのデータを識別
For each アクションはループアクションの一つで、データテーブルから1行ずつデータを取得するアクションです。
If アクションは条件分岐のアクションで、特定の条件を満たす場合のみ処理を行うことができます。
これらを組み合わせることで、データテーブルの特定の条件を満たす行のみを指定できます。
なお、ループごとに次の行を指定できるようにするため、変数を大きくする アクションで毎回カウント用の変数を 1 大きくします。
④データテーブルから行を削除する
対象とするデータテーブルから、③で取得した特定の行を データ テーブルから行を削除する アクションで削除します。
指定するインデックス(行)はカウント用の変数で指定します。
行を削除後は、データテーブルの行数が減るため、変数を小さくする アクションでカウント用の変数を 1 小さくします。
これでフローは完成です。
実行すると、以下の様に対象のデータテーブルから特定の行のみ列名を残して抽出できます。