Slide 1

Slide 1 text

UiPathのすすめ 2020年4月現在

Slide 2

Slide 2 text

7. EXCELを読んでみよう 2020年4月現在

Slide 3

Slide 3 text

やってみましょう! • 「令和2年 総合試験.xlsx」ブック中の「Sheet1」シートに、名前、 国語、算数、英語の点数、合計が展開されている。 ⇒「Excel アプリケーション スコープ」 「範囲を読み込み」 • 国語の平均点より上位の成績の人の情報を抽出し、点数の よい順に並び替える。 ⇒ 「繰り返し(行単位)」 「代入」 「データ テーブルをフィルタリング」 「データテーブルの並び替え」 • その結果ファイルをCSVファイルに出力する。

Slide 4

Slide 4 text

サンプルファイル • https://drive.google.com/file/d/1nj5Z61c_pNbxlehLbq_beNNN cM7VORFo/view?usp=sharing

Slide 5

Slide 5 text

電脳工房 -- 高樹凱.COM ■ 日本人名前自動生成機にて名前を生成しました! http://www.gaoshukai.com/lab/0003/

Slide 6

Slide 6 text

画面の構成 プロジェクト:組み立て中のロボット アクティビティ:ロボットの部品の棚 (スニペット:ロボットの骨格テンプレート) 振り返り

Slide 7

Slide 7 text

画面の構成 デザイナーパネル: ロボットを組み立てているパレット 変数:ロボットで使うメモリ 引数:ロボットに与える、貰うなどの出入り口 (インポート:使用できるMS-DLL部品定義群) 振り返り

Slide 8

Slide 8 text

画面の構成 プロパティ:部品へ値を設定する 概要:ロボット全体の部品の並び 振り返り

Slide 9

Slide 9 text

【処理概要】クラスの三教科の得点が記載されているEXCELブックの、 国語の平均点より上位の成績の人を、点数のよい順に並び替え、CSVファイルに出力する かんたんな仕様書を書いてみよう <入力> <出力> <処理> 入力(型式、内容)を確認する どういうことをするのか確認する ⇒使うアクティビティを想像してみよう 出力(型式、内容)を確認する

Slide 10

Slide 10 text

かんたんな仕様書を書いてみよう <入力> 令和2年 総合試験.xlsx “Sheet1” <出力> 国語平均点以上.csv UTF-8、ヘッダー付き <処理> 1. EXCELを開く 2. 範囲を読み込み(DataTable:DT) 3. 全行を対象に、 -1 国語の点数を合計する 4. 合計を行数で割って、平均を求める 5. 平均より大きいデータを抽出する(DataTable:RDT) 6. 国語の点数を降順に並び替える(DataTable:SDT) 7. 処理結果をCSVに出力する ラフに考えてみる。 間違っていたらあとで修正する 出力は、次のロボの入力となるので、 文字コードなど、要確認 【処理概要】クラスの三教科の得点が記載されているEXCELブックの、 国語の平均点より上位の成績の人を、点数のよい順に並び替え、CSVファイルに出力する

Slide 11

Slide 11 text

EXCELを読んでみよう • EXCELを読むには、「Excel アプリケーションスコープ」を使用し ます。 • 「Excel アプリケーションスコープ」の中で、色々な機能を実装 します(範囲を読み込み、範囲を書き込み、色。。。) • 「出力」の「ワークブック」に変数を指定する事で、同一ファイル への処理を、別のタイミングで行えるようになります。 ⇒但し、保存、閉じるなども自分で組む必要があります。

Slide 12

Slide 12 text

1.「EXCEL」関連のアクティビティを探して見る

Slide 13

Slide 13 text

2.「Excel アプリケーション スコープ」を設定する オプション マクロを設定 ... EnableAll 可視 ... □ 新しいファイルを作成 ... □ 自動保存 ... □ 読み込み専用 ... ■ ~ 出力 ブック ... TBK (WorkBookApplication) 「Ctrl+k」で定義

Slide 14

Slide 14 text

3.「範囲を読み込み」を「Excel アプリケーション スコープ」の中で設定する オプション フィルタの使用 ... □ ヘッダーの追加 ... ■ 表示形式を維持 ... □ 入力 シート名 ... "Sheet1" 範囲 ... "A1" 出力 データテーブル ... DT(DataTable型) 「Ctrl+k」で定義

Slide 15

Slide 15 text

4.平均値を計算するため、「シーケンス」を配置する 5.変数タブで、Double型の「平均値」を定義する 同様に、Int32型の「合計」を定義する

Slide 16

Slide 16 text

6. 「平均値計算」の中で、合計値を求め、母数で割り、商を「平均値」に格納する 「合計」に0を代入する DTの各行分、繰り返す 「合計」に”国語”の点数を加算する 合計 = 合計 + CType(Row.Item("国語"), Int32) 「合計」を行数で割り、平均値を求める 平均値 = 合計 / DT.rows.count

Slide 17

Slide 17 text

7. 「データ テーブルをフィルタリング」で、要件にあった行だけを抽出する 入力データテーブルに、 「DT」を設定 「Ctrl+k」で定義 出力データテーブルに、 「RDT」を定義(Ctrl+k) 列に、DTに存在する 「国語」を設定 操作に、条件を満たす 「>=」を設定 値に、 「平均値」を設定 列フィルターモードに、 「保持」を設定

Slide 18

Slide 18 text

7-2. 「データ テーブルをフィルタリング」で、要件にあった行だけを抽出する 入力データテーブルに、 「DT」を設定 「Ctrl+k」で定義 出力データテーブルに、 「RDT」を定義(Ctrl+k) 列に、DTに存在する 「国語」を設定 操作に、条件を満たす 「<」を設定 値に、 「平均値」を設定 列フィルターモードに、 「削除」を設定

Slide 19

Slide 19 text

8. 「データ テーブルを並べ替え」で、並び替える 並べ替え列 インデックス ... 無指定 列 ... 無指定 名前 ... “国語” 順序 ... “Descending”(降順) 入力 データテーブル ... RDT 出力 データテーブル ... SDT

Slide 20

Slide 20 text

9. 「CSV に書き込み」で、結果を出力する オプション エンコーディング ... 無指定(UTF-8) ヘッダーの追加 ... ■ ファイル ファイルのパス ... "国語平均点以上.csv" 入力 データテーブル ... SDT 区切り文字 … Comma

Slide 21

Slide 21 text

結果 番号は振ってあるが、順番ではない

Slide 22

Slide 22 text

EXCELで読み込んだ、またはCSVで読み込んだ DataTableに連番を振る方法! • DataTableに列を追加して、そこに連番を振る

Slide 23

Slide 23 text

• DataTable型に対して、 「データ列の追加(Int32型)」する。 • 「繰り返し(行単位)」で、 DataTableの全行を対象に、 追加した列に<現在のインデックス> の値を代入する。 row.item("SEQ") ← ix

Slide 24

Slide 24 text

結果 右列に番号が振られている!(代入なので、1~も出来る)

Slide 25

Slide 25 text

EXCELで読み込んだ、またはCSVで読み込んだ DataTableに連番を振る方法! •本邦(RPA Community)初公開!

Slide 26

Slide 26 text

EXCELで読み込んだ、またはCSVで読み込んだ DataTableに連番を振る方法! •本邦(RPA Community)初公開! • データ列の追加の際に「自動インクリメント」をTrueにする!

Slide 27

Slide 27 text

• 空のDataTable型を用意する • そのDataTableに、連番を振りたい DataTableをマージする • 「データ列の追加(Int32型)」する。 その際自動インクリメントをTrueにする! SDT ← New DataTable("連番")

Slide 28

Slide 28 text

結果 左列に番号が振られている! (自動インクリメント、1~は出来ない?)

Slide 29

Slide 29 text

EXCELで読み込んだ、またはCSVで読み込んだ DataTableに連番を振る方法! • 先の方法で、0から振るのではなく、 1から振れる事を確認しました! ⇒さて、どうやったしょうか?