基本ワークシート列操作

ワークシート列に操作を行う場合、ほとんどの状況でwks.col オブジェクトを使用できます。または、範囲表記を列オブジェクトに指定して操作します。

列の追加・挿入

ワークシートの最後に列を追加するには、wks.addCol()方法を使用します。これは指定の名前を有する列を追加し、その名前が使用済みまたは無視された場合、追加される列には一般的な名前が選択されます。

// 新しいワークブックを作成
newbook;
//「スプレッドシートセル表記」 (SCN)をオフ
page.xlcolname = 0;
// Resultという新しい列を最後に追加
wks.addCol(Result);

上記方法は最後に1列ずつ追加する事しかできません。複数の列を追加する場合、wks.nColsプロパティを使用してワークシートの列数を指定する事で列を追加できます。例えば、以下のスクリプトはアクティブなワークシートに3列を追加し、一般的な名前を付けます。(Note:この方法で名前を指定する事はできません。以下の列に名前とラベルをつけるを参照してください。)

// 新しいワークブックを作成
newbook;
 
// ワークシートの最後に3列分追加
wks.nCols = wks.nCols + 3;

ワークシートの最後に列を追加する他に、現在の列の前に指定した数の列を挿入する事もできます。まず、wks.colを使用して現在の列を指定します。そしてwks.insert()メソッドを使用して現在の列の前に 新たな列を挿入します。この方法では、それぞれの列の名前をスペース区切りでリストする必要があります。

// 新しいワークブックを作成
newbook;
// 列2を現在の列として設定
wks.col = 2;
//「スプレッドシートセル表記」 (SCN)をオフ
page.xlcolname = 0;
// 列2の前に列名を指定した3列挿入
wks.insert(DataX DataY Result);

ワークブックのスプレッドシートセル表記については、FAQ-849 を参照してください。

列内の行を挿入または削除

ワークシート列内の行を削除あるいは挿入するには、wks.deleteRows() または wks.insertRows() methodsを使用します。

シンタックスは次のようになります。

wks.deleteRows(rowBegin[,numRows, colBegin, colEnd])
wks.insertRows(rowBegin[,numRows, colBegin, colEnd])

角括弧内の引数はオプションです。

以下にサンプルを示します。

wks.deleteRows(3); //全列の3番目の行を削除
wks.deleteRows(3, 5); //  全列で3番目の行から5行削除
wks.deleteRows(3, 5, 2); //  2番目以降の列の3行目から5行分削除
wks.deleteRows(3, 5, 2, 4); //列2から4の3行目から5行分削除
wks.insertRows(3); // すべての列の3行目の前に行を挿入
wks.insertRows(3, 5); //すべての列の3行目の前に5行挿入
wks.insertRows(3, 5, 2); //2番目以降の列の3行目の前に5行挿入 
wks.insertRows(3, 5, 2, 4); //2から4列の3行目の前に5列挿入

wdelrows Xファンクションでもワークシート行の削除が可能です。

列の移動

colmove Xファクションは、ワークシート内のデータ列を移動するのに使用します。 (範囲変数とは対照的に)明示的な範囲と入力としての移動操作を受け付けます。

// 最初の列をワークシートの最後(左から右)にする
colmove rng:=col(1) operation:=last; 
 
// 列2-4をワークシートの最も左に移動
colmove rng:=Col(2):Col(4) operation:=first;

列の名前を変更する・ラベルを付ける

列の名前(ショートネーム)を変更するために、Originはname$プロパティと共にwks.colオブジェクトを使用できます。また、列ラベル行の文字Gを使用して列のショートネームを変更できます。

// 新しいワークブックを作成
newbook;
 
// 列1の名前を DataX に変更
wks.col1.name$ = DataX;
// 範囲を使用して列2の名前をDataYに変更
range rY = 2;  // 範囲を列2に設定する
rY.name$ = DataY;
 
// 新しい列を追加する
wks.addCol();
// 「スプレッドシートセル表記」 (SCN)をオフ 
page.xlcolname = 0; 
// "G"に名前変更
col(3)[G]$ = "Result";

列ラベル行の文字は列ラベルに簡単にアクセスできる方法です。列ラベルにはロングネーム、単位、コメント、列パラメータ、ユーザ定義パラメータなどが含まれます。

// 新しいワークブックを作成
newbook result:=BkName$;
 
// 以下のラベル行を表示する
// ロングネーム、単位、コメント、最初の列パラメータ
// 最初のユーザ定義パラメータ
wks.labels(LUCP1D1);
 
// 列1と列2を定義する
range r1 = [%(BkName$)]1!1;
range r2 = [%(BkName$)]1!2;
// col を使用してロングネームをセットする
col(1)[L]$ = Time;
col(2)[L]$ = Voltage;
// 範囲で単位をセット
r1[U]$ = Sec;
r2[U]$ = V;
// 範囲を使用して列コメントをセット
r1[C]$ = Sample1;
r2[C]$ = Sample1;
// 範囲を使用して列パラメータをセット
r1[P1]$ = "Machine1";
r2[P1]$ = "Machine1";
 
// 最初のユーザ定義パラメータの名前を変更
wks.UserParam1$ = Current;
 
// 現在のラベル行をセット
r1[Current]$ = 1mA;
r2[Current]$ = 1mA;

列の表示/非表示

列を表示/非表示にするには、colHide Xファンクションを使用します。

// 新しいワークブックを作成
newbook;
 
// ワークシートの列番号をセット
wks.nCols = 6;
 
// 2列目を非表示にする
colHide 2 hide;
 
//3列目と5列目を非表示にする
colHide (3, 5) hide;

非表示にした列を表示にするには、2つ目の引数を hide からunhideに変更して実行します。

列の入れ替え

2つの特定の列を入れ替えるにはcolSwap Xファンクションを使用します。

// 新しいワークブックを作成
newbook;
 
// 列1と列2の位置を入れ替える
colSwap (1, 2);

ここで指定する2つの列は、必ずしも隣り合っている必要はありません。

// 新しいワークブックを作成
newbook;
 
// 列の数を6としてセット
wks.ncols = 6;
 
// 2列目と4列目を入れ替える
colswap (2, 4);

2つの列を交換するとき、ワークブックでスプレッドシートセル表記が有効になっている場合、ショートネームは常にA~Zから連続して自動的に割り当てられるため、列のショートネームが交換されない場合があります。つまり、列のショートネームを交換する場合は、colswapコマンドを実行する前にスプレッドシートセル表記を無効にする必要がある場合があります。詳細は、FAQ-849を参照してください。

列の形式を変更する

プロットの割り当て

列へのプロット属性は選択したデータがデフォルトでどのように扱い、作図をするのか決定します。プロット属性は、X、Y、Z、Zエラー、Yエラー、ラベルなどを含みます。これらはwks.col.typeを使用して変更できます。

// データをインポート
newbook;
string fname$ = system.path.program$;
fname$ += "Samples\Matrix Conversion and Gridding\XYZ Random Gaussian.dat";
impasc;
 
// プロット属性をセット
wks.col = 3;  // 列3を現在の列にセット
wks.col.type = 6;  // Z
 
// 3番目の列(Z列)を選択
worksheet -s 3 1 3 -1;
// 温度を元にしたカラーマップ曲面図をOpenGLで作成
worksheet -p 103 glcmap;

列幅

列幅をセットするには、wcolwidth Xファンクションを使用します。または、wks.col.widthも使用できます。

// ワークブックを開く
string strPath$ = system.path.program$;
strPath$ += "Samples\Graphing\Automobile Data.ogw";
doc -o %(strPath$);
 
// 列2を ###ではなく、数字を全て表示する
// 列2の長さを6文字分にセット
wcolwidth irng:=col(2) width:=6;

データ形式と表示

列に正しいデータ形式(データ型)を設定して、列データを正しく表示できます。また、作図やデータ分析などの操作を行う際の助けになります。列は、数値、テキスト、日付、時間、月、曜日等多くのデータ型を選択できます。データ型をセットするにはwks.colオブジェクトのformatプロパティを使用してください。

// データをインポート
newbook;
string fname$ = system.path.program$;
fname$ += "Samples\Signal Processing\Average Sunspot.dat";
impasc;
 
// 列2に数値(現在はテキストと数値)に設定
wks.col2.format = 1;  // 数値 = 1
 
// 桁数指定法を "小数桁数"にし、
// 桁数を2にする
wks.col2.digitMode = 1;  // 小数点以下の桁数を指定
wks.col2.digits = 2;  // 書数点以下2桁

以下のサンプルはそれぞれの対応する形式に対応する設定を紹介します。

  1. 数値
    // データをインポート
    newbook;
    string fname$ = system.path.program$;
    fname$ += "Samples\Curve Fitting\Enzyme.dat";
    impasc;
     
    //  列2に数値(現在はテキストと数値)にセット
    wks.col2.format = 1;  // 数値 = 1
    // 表示フォーマットをカンマ付にする
    wks.col2.subformat = 4;  // 小数点として表示1,000
    // データ型は短い整数にする
    wks.col2.numerictype = 3;
     
     
    // 列3にも同じような操作をする
    wks.col3.format = 1;  // 数値 = 1
    // 表示フォーマットはカンマ付にする
    wks.col3.subformat = 4;  // 小数桁として表示1,000
    // データ型を短い整数にする
    wks.col3.numerictype = 3;
            
    
  2. 日付

    日付と時間のフォーマットに関して、列内のデータがユリウス歴(日付と時間のフォーマットに見えますが、実際には時間です)ではない場合、直接日付や時間としてセットできません。あるいは日付と時間フォーマットに見える場合、数値が欠損値になるか、別のものになります。この問題を避けるために、Originは wks.col.setformat()メソッドを提供しています。

    // データをインポート
    newbook;
    string fname$ = system.path.program$;
    fname$ += "Samples\Import and Export\Custom Date and Time.dat";
    impasc;
     
    // 列1のデータ型を日付にセット
    // カスタム表示形式では、
    // 現在のようなテキスト表示を列に行う
    wks.col1.setformat(4, 22, dd'.'MM'.'yyyy HH':'mm':'ss'.'##);
    // データ型 yyyy/MM/dd HH:mm:ss をセット
    wks.col1.subformat = 11;
            
    
  3. 時間

    上記の日付の説明を参照してください。

    // データをインポート
    newbook;
    string fname$ = system.path.program$;
    fname$ += "Samples\Import and Export\IRIG Time.dat";
    impasc;
     
    // 列1のデータ型を時間にセット
    wks.col1.format = 3;  // 時間 = 3
    // IRIG 時間形式「DDD:HH:mm:ss.##」で表示
    wks.col1.subformat = 16;
            
    
  4. // 列1のデータ型を月にセット
    // そして、月の名前を全て表示
    wks.col1.format = 5;  // 月 = 5
    wks.col1.subformat = 2;  // 月の名前を全て表示
            
    
  5. 曜日
    // 列1のデータ型を曜日にセット
    // 各曜日の最初の文字のみを表示
    wks.col1.format = 6;  // 曜日 = 6
    wks.col1.subformat = 3;  // 各曜日の最初の文字を表示
            
    

列にスパークラインを追加する

sparklines Xファンクションは指定した列にスパークラインを追加するのに使用します。

// ワークブックを開く
string strPath$ = system.path.program$;
strPath$ += "Samples\Graphing\Automobile Data.ogw";
doc -o %(strPath$);
 
//ロングネームに"Year" とついている列以外全てにスパークラインを追加
for(ii = 2; ii <= wks.nCols; ii+=5)
{
        sparklines sel:=0 c1:=ii c2:=ii+3;
}

列の削除

deleteコマンドはワークシートから列を削除する事ができます。

// ワークブックを作成
newbook;
// 列Bを削除
delete col(B);
// 4列ある新しいワークシートを追加
newsheet cols:=4;
// rangeを使って3列削除
range r1 = 3;  // 新しく追加したワークシートの列3
delete r1;
// rangeを使って複数列削除
newsheet cols:=6;
range r2 = (1,3,4);  // 複数列をrangeに割り当て
delete r2;

削除したい列がワークシートの最後にある場合、削除する列をwks.nColsにより指定すると、削除できます。

// ワークブックを開く
string strPath$ = system.path.program$;
strPath$ += "Samples\Graphing\Automobile Data.ogw";
doc -o %(strPath$);
 
// 開いたワークシートの最後の20列分を削除
wks.nCols = wks.nCols-20;