wjoinbycol


概要

データ整形:列で複数シートを結合する

追加の情報

必要なOriginのバージョン: Origin 2015 SR0以降

コマンドラインでの使用法

1. wjoinbycol irng:=([Book1]Sheet1,[Book2]Sheet1) condition:="[Book1]Sheet1!A=[Book2]Sheet1!A"

2. wjoinbycol irng:=([Book1]B1,[Book1]B2,[Book2]B1,[Book2]B2) condition:="[Book1]B1!A=[Book1]B2!A=[Book2]B1!A=[Book2]B2!A" unmatch:=1 combine:=0 missing:=1;

Xファンクションの実行オプション

スクリプトからXファンクションにアクセスする場合、追加のオプションスイッチについてのページを参照してください。

変数

表示
変数
I/O

データ型
デフォルト
説明
入力ワークシート irng

入力

Range

<unassigned>

入力ワークシートデータ範囲を指定

シンタックス: ([BookName1]SheetName1!, [BookName2]SheetName2!).

一致する列 condition

入力

string

<unassigned>

irngで定義された入力ワークシートと並行して、ワークシートを結合するための一致する列条件を指定します。コネクタとして「=」を使用します。一致する列の全ての値は比較され、一致した行は結果ワークシートで同じ行として結合されます。

完全なシンタックスは:
[BookName1]SheetName1!ColumnShortName1=[BookName2]SheetName2!ColumnShortName2

ロングネームが入力シート間で共有されている場合、等号「=」を付けずに、列のロングネームまたはショートネーム(ロングネームが最初の照合に使用されます)のみを入力できます。これは、入力したすべてのシートで指定された名前のすべての列が一致する必要があることを意味します。たとえば、「Time」が一致する列として入力された場合、選択されたすべてのシートの列「Time」のすべての値が比較され、一致した行が結果ワークシートの同じ行として結合されます。ワークシートに列「時間」がない場合、そのシートは削除されます。

ソート出力 sort

入力

int

2

結果シートの計算値の順序を制御します。次の3つのオプションを使用できます。

0= 一致する列 -- 昇順
1= 一致する列 -- 降順
2= 最初のシートの順序を保持

一致した列を一つに統合が選択されていない場合、一致する列 -- 昇順/降順は、最初のシート順序で列を一致させるのではなく、出力列を並べ替えます。

非一致を削除 unmatch

入力

int

0

一致しない値を削除するかどうか指定します。

0 = 削除せず、欠損値で埋める
1 = 一致しない値を削除
重複を削除 multiple

入力

int

0

1つの値に対して一致するセルが複数ある場合に使用されるオプションです。最初に一致したデータ行以外を削除するかどうかを指定します。0 = 削除しない, 1 = 削除

multiple1の場合、結果ワークシートには最初に一致した値のみが含まれます。

全ての組み合わせに合致 combine

入力

int

1

1つの値に対して一致するセルが複数ある場合に使用されるオプションです。結果ワークシート中にすべての可能な組み合わせを表示するか指定します。

0= 全ての組み合わせを表示せず、欠損値がある組み合わせがないようほかの列を埋めます
1= 全ての組み合わせを表示します
一致した列を1つに統合 merge

入力

int

1

結果ワークシート内の一致した列のみ保持するか指定します。

0 = 保持せず、結果シートには複数の一致列がある,
1 = 結果ワークシート内の一致した列のみを表示しますこの場合、一致する1つの列のみが最初の列として結果ワークシートに表示され、データ列は並べて配置されます。
欠損値を考慮する missing

入力

int

0

一致した列の欠損値行を無視するか指定します。

0 =一致する列に欠落している値がある場合、結果シートではデータ行全体が無視されます。
1 =一致する列にある欠落値は、個別のグループとして扱われます。
データセット識別子 id

入力

int

0
ソースデータセットの識別子を指定します。

0 = なし, 1 = 範囲, 2 = ブック名, 3 = シート名, 4 =インデックスで作成された行番号を使用してデータセットソースを指定, 5 = ソースワークシートのシートラベルを表示

インデックス index

入力

string

<自動>
id=4のときに利用できます。識別子のインデックスを指定します。

フォーマットは、開始増分です。例えば、”1:2”の場合はソースワークシートを1,3,5...として指定します。

出力ワークシート ow

出力

Worksheet

<new>

出力範囲を指定します。シンタックスはこちらです。

説明

このXファンクションはLabTalkスクリプトで使用できます。複数ワークシートを結合して1つにまとめます。組み合わせは各入力ワークシート内の一致した列で決定されます。特別なケースでの値の扱いを設定するオプションがあります。例えば、一致列が複数ある場合、一致する値がない場合、欠損値がある場合などです。

2つのワークシートを組み合わせる場合は、列でワークシートを結合するツールを使用することもできます。

サンプル

一致する列でワークシートを組み合わせる簡単なサンプルです。一致する列のデータは日付です。

  1. 新しいOriginプロジェクトを作成し、ウィンドウ:スクリプトウィンドウを選択してスクリプトウィンドウを開き、以下のスクリプトを実行してソースデータシートを用意します。
  2. // ワークシートが2つのブックを作製
    newbook name:="JoinWksEx" sheet:=2 option:=lsname;
    // Sheet 1のA列に2014/10/1から2014/10/25までのパターンデータを入力
    patternD irng:=[JoinWksEx]Sheet1!col(A) from:=2456931 to:=2456955 unit:=day;
    // Sheet 1mp列Bに行番号を入力
    patternN irng:=[JoinWksEx]Sheet1!col(B) to:=25;
    // Sheet 2の列Aを2014/10/10から2014/10/30までのパターンデータを異なる表示形式で入力
    patternD irng:=[JoinWksEx]Sheet2!col(A) display:=19 from:=2456940 to:=2456960 unit:=day;
    // Sheet 2の列Bに10から30の番号を入力
    patternN irng:=[JoinWksEx]Sheet2!col(B) from:=10 to:=30;
  3. 2つのワークシートといくつかのデータが入力されたJoinWksExという名前のブックが作成されます。両方のシートの日付データを含む列Aを一致する列として使用します。表示形式が2つのシートで異なることに注意してください。
  4. Xファンクションwjoinbycolを実行して、以下のそれぞれのケースでの結果を取得します。
  5. // Case 1: デフォルト設定で結合(非一致を削除せず、一致列を一つに統合しない)
    wjoinbycol irng:=[JoinWksEx](Sheet1,Sheet2) condition:="[JoinWksEx]Sheet1!A=[JoinWksEx]Sheet2!A" ow:=[<new>]<new>;
     
    // Case 2: 非一致を削除
    wjoinbycol irng:=[JoinWksEx](Sheet1,Sheet2) condition:="[JoinWksEx]Sheet1!A=[JoinWksEx]Sheet2!A" unmatch:= 1 ow:=[<new>]<new>;
     
    // Case 3: 一致列を一つに統合しない
    wjoinbycol irng:=[JoinWksEx](Sheet1,Sheet2) condition:="[JoinWksEx]Sheet1!A=[JoinWksEx]Sheet2!A" merge:=0 ow:=[<new>]<new>;

関連するXファンクション

wappend, wjoinbylabel, Wjoincols


キーワード:統合, 結合