Upgrade to Pro — share decks privately, control downloads, hide ads and more …

200218 DataTableってなんだ? はなっちさん

RPACommunity
February 18, 2020

200218 DataTableってなんだ? はなっちさん

RPACommunity

February 18, 2020
Tweet

More Decks by RPACommunity

Other Decks in Technology

Transcript

  1. 自己紹介 • 小﨑 肇(こざき はじめ⇒[ハナ]肇⇒はなっち!) • 59歳 もうすぐ… • 東京都豊島区⇒神奈川県川崎市中原区

    • 趣味 自転車だったけど、最近はINGRESS • 職歴  かなり前に今の会社に入社。 COBOL⇒JAVA⇒EXCEL-VBA  EXCEL-VBAでは、JP1-REPORTERとか、 SAGENT-REPORTERとか…  UiPath歴は、21ヶ月… Presented By [email protected]
  2. 自動販売機で考えてみよう 自動販売機とは、ボタンを押すと、商品が出てくる機械 でも、売価以上のお金をいれないと、商品が出てこない 150 お金を溜める所に 50円 100円をいれてみる ⇒ 足りないので商品が出てこない もう100円をいれてみる

    ⇒ 足りたので商品が出てくる! • 100円+100円=200円と言う事が、自 動販売機には分かる! • 200円から150円の商品を買って、 お釣りが50円と言うのも分かる! 情報をためておく場所、名前を変数
  3. DataTable型って DataTable型のデータを参照/設定は、 ① データテーブルの ② (ある)行の ③ (ある)列 の順である。 ②

    ③ 例:B4セル相当位置 DataTable.Rows(3).Item(1) ←※2 ↑※1 Or ↓※1 DataTable.Rows(3).Item("Column1") ※1 行の先頭は0から始まる ※2 最左端列は0から始まる
  4. DataTable型…どのように使う? DataTable型の容れ物から必要なデータをフィルタする ②実在する列 名 Or 列番号 ④フィルタ する値 ①条件合致 データを保持/

    削除 ⑤指定した列 を保持/削除 ⑥実在する列名 Or 列番号 入力データテーブル 出力データテーブル 入力データ テーブルを指 定しても可 • 数値とか日付とかでもフィルタ掛けられるが、全 行を対象に形式変換をする必要がある • フィルター行を設定しなければ、列レイアウト変 更として使える ③条件指定
  5. DataTable型…どのように使う? 同じレイアウトのDataTable型をマージする ソースデータテーブル 保存先データテーブル 一致した列名にマージする • レイアウトは保存先に従う • Addの場合、保存先にない列は列追加される •

    Ignoreの場合、保存先にない列は無視される • Errorの場合、 DataExceptionにて異常終了する • AddWithKeyの場合、Addと同様だが、主キー情報も追加する ⇒普通はキー情報は存在しないので、Addと同意と捉える
  6. DataTable型…どのように使う? DataTable型の容れ物を並び替える ソースデータテーブル 保存先データテーブル 並び替える列は一つだけ。複数キーは指定できない(後述) • インデッスクの場合、最左端を0として指定する ⇒1 など •

    列の場合、DataColumnを指定する ⇒DT.Columns(1) など • 名前の場合、列名を指定する ⇒“Column1”、DT.Columns(1).ColumnName など • 存在しない列を指定した場合は異常終了する
  7. DataTable型…どのように使う? 他のDataTableと結合する ソースデータテーブル 保存先データテーブル 突合させる列は複数指定可能 • 処理結果は、入力データテーブル1の右側に入力データテーブル2の 情報が展開される。列名が重複する場合は、「◦◦_1」のように後 置される •

    結合型Innerの場合は、双方キー一致したもの • 結合型Leftの場合は、入力データテーブル1の全行と、キー一致し た入力データテーブル2の行が展開される • 結合型Fullの場合は、Leftに加えて、キー一致しなかった入力デー タテーブル2の行も展開される Col1 ColA キー1 V1 キー2 V2 Col1 ColB キー2 Y2 キー3 Y3 Col1 ColA Col1_1 ColB キー1 V1 キー2 V2 キー2 Y2 キー3 Y3 × = Inner Left Full ②実在する列 名 Or 列番号 ④実在する列 名 Or 列番号 ①結合 型 ③条件指 定 ※条件指定[=]は、VLOOKUPワークシート関数で検索方法に[完全一致(FALSE)]を指定したようなもの
  8. DataTable型…こんな時どうする? 先頭行の列名”A”とC列目のデータが欲しい .NET データテーブル.Rows(0).Item("Column1") データテーブル.Rows(0).Item(2) で取得可能 最終行の”A”とC列目のデータが欲しい データテーブル.Rows(データテーブル.Rows.Count - 1).Item("Column1")

    データテーブル.Rows(データテーブル.Rows.Count - 1).Item(2) で取得可能 ※データテーブル上では、行の先頭は0であるため ※データテーブル上では、行の先頭は0であるため、最終行は件数から1を減じたものとなるため