前回の記事でExcelの表領域の複数セルを一括で読み込む方法について学習しました。
この記事では読み込んだデータをループ処理で1行ずつ取り出す方法について学習します。
この記事でわかること!
- Power Automate for desktopで読み込んだExcel表から値を取り出す方法がわかります。
- 値を一個取り出す方法
- 行単位で取り出す方法
- 列単位で取り出す方法
前回のおさらい
「Excelワークシートから読み取り」アクションによって、表データを一括で読み込むことができました。読み込んだデータはDataTable型変数に格納されました。
DataTable型変数とは?
DataTable型変数はExcelの表と同じく行と列で構成される特殊なデータ型の変数です。プログミングがわかる方は2次元配列というとご理解いただけるかと思います。
Datatable型変数のプロパティ
Datatable型変数はいくつかのプロパティを持っています。
プロパティ | 役割 |
---|---|
Columns | 列名(列見出し・ヘッダー)を列挙します。 |
Columns.count | 列数を表示します。 |
RowsCount | 行数を表示します。 |
IsEmpty | Datatableの中が空っぽだったらTrue Datatableの中にデータが格納されていたらFalseを返します。 |
Datatable型変数のプロパティにアクセスする方法
▲変数を選択できる場所でDatatable型変数をクリックすると、使用できるプロパティが表示されるので選択することで使用することができます。あるいはDatatable型にドットを付けてプロパティ名を直接入力することでアクセスできます。例えばExcelDataというDatatable型変数のColumnsプロパティにアクセスするには%ExcelData.Columns%と入力します。
▲%ExcelData.Columns%を使って列の一覧を取得した例。(Columnsプロパティ)
Datatable型変数から値を取り出す方法
ここからはDatatable型変数から値を取り出す方法について学習していきます。
Datatable型変数から値を取り出すには[](角カッコ)を使って行番号と列番号を指定してアクセスします。具体的な方法については実際にいくつかのパターンを想定して取り出しながら解説していきたいと思います。
使用するテスト用ダミーデータ
列1 | 社員番号 | 名前 | 性別 | 生年月日 | 電話番号 | 携帯番号 | メール | 郵便番号 | 住所 |
1 | 00001 | 田中 戴三 | 男 | 1989/3/9 | 03-3388-3419 | 070-6029-5912 | taizou89@example.com | 132-0023 | 東京都江戸川区西一之江4-8-1-8F |
2 | 00002 | 松野 勝司 | 男 | 1977/7/2 | 090-0866-3992 | ntm6048341@goo.ne.jp | 604-8341 | 京都府京都市中京区岩上町4-1-3 | |
3 | 00003 | 小倉 幸四郎 | 男 | 1994/3/2 | 018-536-4457 | 070-5908-3506 | k-ogura@goo.ne.jp | 018-1617 | 秋田県南秋田郡八郎潟町イカリ8-11-6 |
4 | 00004 | 宮下 秋徳 | 男 | 1987/6/13 | 078-408-7352 | akinorimiyasita@goo.ne.jp | 674-0082 | 兵庫県明石市魚住町中尾8-6-6 |
▲前回と同様の上のダミーデータを使って検証していきます。このままExcelに張り付けると表組みを維持したまま張り付けることができます。テスト用にお使いください。
使用するフロー
前回の記事で作成したフローに「メッセージを表示」アクションを追加して取得ができているかを検証していきます。
Robinソースコード
Excel.LaunchExcel.LaunchAndOpen Path: $'''C:\\Users\\user\\Desktop\\アドレスリスト.xlsx''' Visible: False ReadOnly: True LoadAddInsAndMacros: False Instance=> ExcelInstance Excel.SetActiveWorksheet.ActivateWorksheetByIndex Instance: ExcelInstance Index: 1 Excel.GetFirstFreeRowOnColumn Instance: ExcelInstance Column: $'''B''' FirstFreeRowOnColumn=> FirstFreeRowOnColumn Excel.ReadFromExcel.ReadCells Instance: ExcelInstance StartColumn: 1 StartRow: 1 EndColumn: $'''J''' EndRow: FirstFreeRowOnColumn - 1 ReadAsText: False FirstLineIsHeader: True RangeValue=> ExcelData Excel.CloseExcel.Close Instance: ExcelInstance
Datatableから1個だけ取り出す方法
データを1個だけ取り出すには、Datatable[行番号][列番号]かDatatable[行番号][列ラベル]と記述します。
例えば上の図のDatatable場合、
- 1行目の田中さんの名前を取り出すには、
- %ExcelData[0][3]%あるいは%ExcelData[0][‘名前’]%と記述します。
- 4行目の宮下秋徳さんのメールアドレスを取り出すには、
- %ExcelData[3][8]%あるいは%ExcelData[3][‘メール’]%と記述します。
▲メッセージを表示アクションに%ExcelData[0][‘名前’]%を記入してみます。
▲名前が取り出せました。
Datatableから行を取り出す方法
データを1行取り出すには、Datatable[行番号]と記述します。
例えば上の図のDatatable場合、
- 1行目の田中さんのデータを取り出すには、
- %ExcelData[0]%と記述します。
- 4行目の宮下秋徳さんのデータを取り出すには、
- %ExcelData[3]%と記述します。
▲メッセージを表示アクションに%ExcelData[0]%と記入してフローを実行してみます。
▲行データが取り出せました。
1, 00001, 田中 戴三, 男, 1989/03/09 0:00:00, 03-3388-3419, 070-6029-5912 , taizou89@example.com , 132-0023, 東京都江戸川区西一之江4-8-1-8F
▲行データは上記のように列がカンマで区切られた状態で取得できます。
Datatableから列を取り出す方法
列を取り出すには「変数」グループの中の「データテーブル列をリストに取得」アクションを使う方法があります。
▲パラメータを下記のように入力します。
- データテーブル:%ExcelData%
- 列名またはインデックス:列名か列番号を指定します。今回は「メール」と列名を指定しました。
▲「データテーブル列をリストに取得」アクションはColumnAsListというリスト型に変数に値を入れて返却してくれます。
▲リスト型の変数から値を1個取り出すには[](角カッコ)にインデックスを渡します。試しに%ColumnAsList[0]%を1個取り出してみます。
▲メールアドレスを1個取り出すことができました。
Datatableから1行ずつループ処理で取り出す方法
1行ずつ取り出す方法は別記事で解説します。
まとめ
以上、この記事ではPower Automate for desktopのDataTable型変数の取り扱い方について学習しました。
このブログではRPA・ノーコードツール・VBA/GAS/Pythonを使った業務効率化などについて発信しています。
参考になりましたらブックマーク登録お願いします!
Power Automate学習教材
▲Kindleと紙媒体両方提供されています。デスクトップフロー、クラウドフロー両方の解説がある書籍です。解説の割合としてはデスクトップフロー7割・クラウドフロー3割程度の比率となっています。両者の概要をざっくり理解するのにオススメです。
▲Power Automate for Desktopの基本をしっかり学習するのにオススメです。この本の一番のメリットはデモWebシステム・デモ業務アプリを実際に使ってハンズオン形式で学習できる点です。本と同じシステム・アプリを使って学習できるので、本と自分の環境の違いによる「よく分からないエラー」で無駄に躓いて挫折してしまう可能性が低いです。この点でPower Automate for desktopの一冊目のテキストとしてオススメします。著者は日本屈指のRPAエンジニア集団である『ロボ研』さんです。
▲Power Automate クラウドフローの入門書です。初心者の方には図解も多く一番わかりやすいかと個人的に思っています。
Microsoft 365/ Power Automate / Power Platform / Google Apps Script…
▲Udemyで数少ないPower Automateクラウドフローを主題にした講座です。セール時は90%OFF(1200円~2000円弱)の価格になります。頻繁にセールを実施しているので絶対にセール時に購入してくださいね。満足がいかなければ返金保証制度がありますので安心してご購入いただけます。