「データテーブルを結合」アクティビティのご紹介をします。
1.アクティビティのプログラム名
RCA.Activities.Core.JoinDataTables
2.説明
Studio バージョン ~2.0.2.0
クイックアクセス: 「ツールボックス」 > 「データテーブル」 > 「データテーブルを結合」
Studio バージョン 2.0.3.0~
クイックアクセス: 「ツールボックス」 > 「コア」 > 「データテーブル」 > 「データテーブルを結合」
お互いのデータテーブルにある共通の値を使用して、2つのデータテーブルを結合します。
※動作を確認したコボットStudioのバージョン:2.0.5.1、2.1.1.0、2.1.1.2
※バージョンによって文言などが一部異なる場合がございます
3.プロパティ
プロパティ項目 | プロパティ名 | 入力欄 | 説明 |
---|---|---|---|
オプション | 結合タイプ | ドロップダウン選択 | 結合させたい内容を下記の3つのオプションから1つ選択する。 Inner:ルールを満たすデータテーブル1とデータテーブル2の全ての行を保持し、他の情報は削除される。 Left:データテーブル1の全ての行とルールを満たすデータテーブル2の行が保持される。 Full:ルールに関わらず、データテーブル1とデータテーブル2の全ての行が保持される。 |
その他 | パブリック | チェック項目 | ログにアクティビティ内の変数と引数がログファイルに書き込まれ、Centerにプッシュされる。(詳細は「プロパティ項目「パブリック」について」を参照) |
表示名 | 任意の文字列 | デザイナーパネルのアクティビティ名に反映される。 | |
出力 | 出力データテーブル | 値を入力(DataTable型) | データテーブル1とデータテーブル2が結合されたデータテーブルを設定する。 |
入力 | データテーブル1 | 値を入力(DataTable型) | 1番目に追加するデータテーブルを設定する。 |
データテーブル2 | 値を入力(DataTable型) | 2番目に追加するデータテーブルを設定する。 |
4.使い方
任意のExcelワークブックにあるSheet1とSheet2の2つのデータを結合した結果を、Sheet3に書き込む例をご紹介します。
事前準備として、プロジェクトフォルダ配下に「Data」フォルダを作成し、その中にSheet1、Sheet2、Sheet3のあるExcelワークブック(この例の場合は「Sample.xlsx」)を予め作成しておきます。
※Sheet1、Sheet2、Sheet3の内容は下図を参考にしてください。
流れは次の通りです。
- Excelファイルの2つのシートそれぞれからデータを読み込む
- 読み込んだ2つのデータテーブルを結合し、重複列を削除する
- 並び替えをして、Excelファイルの3つ目のシートに書き込む
まずは、「Excel」>「Interop」> 「Excelアプリケーションスコープ」をドラッグ&ドロップし、配置します。
プロパティにある「ワークブックパス」に、開きたいExcelのファイルパスを文字列かString型の変数で(この例の場合は、文字列「 "Data\Sample.xlsx" 」を)入力します。
次に「Excel」>「Interop」> 「Excel範囲を読み込む」をドラッグ&ドロップし、配置します。
プロパティにある「オプション」>「ヘッダの追加」をクリックし、チェックを入れます。
プロパティにある「出力」>「データテーブル」にDataTable型の変数( この例の場合は「 dtsample1 」)を入力します。
※Sheet1にあるデータをdtsample1として読み込みます。
※変数の作成方法については「変数の作成」をご参照ください。
さらにもう一つ、「Excel」>「Interop」> 「Excel範囲を読み込む」をドラッグ&ドロップし、配置します。
プロパティにある「オプション」>「ヘッダの追加」をクリックし、チェックを入れます。
プロパティにある「出力」>「データテーブル」にDataTable型の変数( この例の場合は「 dtsample2 」)を入力し、さらに「入力」>「シート名」に文字列かString型の変数(この例の場合は、文字列で「 "Sheet2" 」)を入力します。
※Sheet2にあるデータをdtsample2として読み込みます。
※変数の作成方法については「変数の作成」をご参照ください。
「 dtsample1 」と「 dtsample2 」のデータテーブルを結合するために、「コア」>「データテーブル」> 「データテーブルを結合」をドラッグ&ドロップし、配置します。
「結合ウィザード」をクリックし、ウィザード画面を表示します。
「結合ウィザード」画面にある「入力データテーブル1」、「入力データテーブル2」、「出力データテーブル」にDataTable型の変数(この例の場合はそれぞれ「 dtsample1 」、「 dtsample2」、「 dtsample3 」)を入力します。
※「結合型」は変更せず「Inner」のままにしておきます。
さらに「結合ウィザード」画面にある、「テーブル1の列」と「テーブル2の列」に「入力データテーブル1」と「入力データテーブル2」に共通して存在する列名(この例の場合は「 "商品" 」)を入力します。
「操作」にある「 < 」をクリックし、表示された内容から「 = 」を選択します。その後「OK」をクリック、または「Enterキー」を押下し「結合ウィザード」画面を閉じます。
「操作」で選択できるオプション
操作 | 条件 |
< | より小さい(テーブル1の列がテーブル2の列より小さい) |
> | より大きい(テーブル1の列がテーブル2の列より大きい) |
<= | より小さいまたは等しい(テーブル1の列がテーブル2の列より小さいまたは等しい) |
>= | より大きいまたは等しい(テーブル1の列がテーブル2の列より大きいまたは等しい) |
= | 等しい(テーブル1の列とテーブル2の列が等しい) |
!= | 等しくない(テーブル1の列とテーブル2の列が等しくない) |
今度は、「コア」>「データテーブル」> 「データ列を削除」を配置します。
※データテーブル1とデータテーブル2には、共通の列(この例の場合は「 "商品" 」)があるため、それぞれのデータテーブルを結合すると「 "商品" 」と「 "商品_1" 」という列が出来ます。しかし、「 "商品_1" 」は「 "商品" 」と重複しているデータとなるため、「 "商品_1" 」の列を削除します。
プロパティにある「入力」>「データテーブル」に、DataTable型の変数(この例の場合は「 dtsample3 」)を入力し、さらに「列名」に文字列かString型の変数(この例の場合は、文字列で「 "商品_1" 」)を入力します。
データテーブルの店名を昇順で並び替えるため、「コア」>「データテーブル」> 「データテーブルを並び替える」をドラッグ&ドロップし、配置します。
プロパティにある「ソート列」>「列名」に、文字列かString型の変数(この例の場合は、文字列で「 "店名" 」)を入力します。
さらに、プロパティにある「出力」>「出力データテーブル」と「入力」>「データテーブル」に、それぞれDataTable型の変数( この例の場合はどちらも「 dtsample3 」)を入力します。
最後に、データテーブル1とデータテーブル2を結合したデータテーブル3の内容を「Sample.xlsx」の「Sheet3」に書き込むため、「Excel」>「Interop」> 「Excel範囲に書き込む」をドラッグ&ドロップし、配置します。
プロパティにある「オプション」>「ヘッダの追加」をクリックし、チェックを入れます。
プロパティにある「入力」>「シート名」に文字列かString型の変数(この例の場合は、文字列で「 "Sheet3" 」)を入力し、さらに「データテーブル」にDataTable型の変数( この例の場合は「 dtsample3 」)を入力します。
「ホーム > スタート」をクリック、または、「F5キー」押下でロボットを実行し、「Sample.xlsx」の「Sheet3」に「Sheet1」と「Sheet2」のデータが結合された内容が表示されていることを確認してください。