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

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

Avatar for RPACommunity RPACommunity
February 18, 2020

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

Avatar for RPACommunity

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を減じたものとなるため