式を使ってセル値を設定


Set Cell Values 1.png

Originはバージョン2018から、セルレベルでの計算に対応しています。

ここで説明するセルの数式の仕組みは、セルの値に対して数学演算を行う唯一の方法ではありません。Originには、複数列を含むデータ列の一部あるいは全体に対し、行単位の演算を行う、値の設定機能があります。値の設定は、構文の色付けや機能の補助など、複雑な表現を作成するときに非常に役立つものがあります。さらに、計算を実行する前にデータを調整するなどのスクリプトを定義することもできます。詳細は、列値の設定 - クイックスタートを参照してください。


セル式の表記法

セル式はイコール記号"=" から記述します。

=A1 //  列A、1行目の値を返す
=A1+B1 // 列A1行目と列A2行目の合計を返す
=mean(A) // 列Aの平均値を返す
=total(A[1:10]) // セルA1からA10までの合計を返す
=mean(A1:J10) // A1からJ10までの範囲にあるセルの平均値を返す
=date(A1, "dd.MM.yyyy HH:mm:ss.##")// A列1行目で指定された書式の日付/時刻文字列をとり、ユリウス日の値を返します

編集モードとセル式の表示

ワークシートには編集モードがあります(メニューの編集:編集モード

  • 編集モードにすると、セル式を表示でき、簡単に編集できます。
  • 編集モードをオフにすると、セルの数式が非表示になり、結果の値が表示されます(このモードのときは、セルをダブルクリックして式を編集することできます)。
Set Cell Values 2.png

特定のセル値の背後にある数式を表示するために、必ず編集モードをオンにしなければいけないわけではありません。セルが選択されると、数式がステータスバーの左下隅に表示されます。

Set Cell Values Status Bar.png

数式バーでセル式を編集する

Origin2021で導入された数式バーは、Excelのようにセルまたは列の数式/式を入力できます。数式バーを使用してセル式を入力する必要はありませんが、関数検索、インタラクティブな範囲選択、および式、特にセル幅を超える長い式の見やすさの向上という利点があります。セルまたはセル範囲を範囲変数として定義することもできます。

UG Formula Bar UI.png

ワークブックをアクティブにして数式バーを表示するには、

  • 表示:数式バーを選択します。

もしくは、

  • Ctrl+Alt+Fを押します


セル(データセルまたはF(x)=)に式を入力するには、セルをクリックしてから、次の操作を行います。

  1. 「=」を入力し、式を直接入力します。

または、

  1. FB FunSel.pngボタンをクリックして、関数の検索と挿入ダイアログを開きます。
  2. 目的の関数を検索し、ダブルクリックして数式バーに挿入します。

式が完成したら、チェックボタンFB OK.pngをクリックするか、Enterキーを押します。


セル式にデータ範囲を挿入するには、

  1. 「=」を入力し、式を入力します。データ範囲を挿入する場所にカーソルを置き、次の方法で範囲を選択します。
    • 列ヘッダをクリックする、もしくは
    • ドラッグしてセルの範囲を選択する。
  2. 式が完成したら、チェックボタンFB OK.pngをクリックするか、Enterキーを押します。

Note:別のブックのデータ範囲の挿入はサポートされていません。


式が特に長い場合にセル式全体を表示および編集するには、

  • 数式バーの端をドラッグしてサイズを変更します。

または、

  • フォントサイズを変更するには、 LabTalkシステム変数 @FBFS の値を変更します(デフォルトでは「130」です)。


選択したセル(セル範囲)を範囲変数として定義するには、

Named range formula bar.png

ワークシートセルの式に何を入力できますか?

データ参照に加え、セル式には変数、演算子、関数、定数を含めることができます。

データ参照 変数 演算子 関数 定数

セル式のサンプル

Originでのセル参照は、MS Excelと同様、相対絶対、または複合 にできます。Origin 2020より前のバージョンでは、絶対セル参照に角括弧が使用されていました(例: A[1])。現在は、絶対および混合セル参照でMS Excelの「$-」表記を使用できます。角括弧の使用もできますが、Excel利用歴が長いユーザほど、$表記の方がが使いやすいでしょう。

「End」または「0」を使用して、列の最後のセルを定義します。したがって、たとえば、列Cのすべての値、行5から列の最後の行を合計するセル式は、「=total(C[5:end]」または「=total(C[5:0])」となります。

以下はセルに入力できる式のサンプルです。

Originセル表記法 Excel表記法 説明
=B1 - C1 =B1-C1 B列1行目とC列1行目の差を返します。
=B0 - C1 N/A B列の最後の行(0 =最後のセル)とC列1行目の差を返します。
=B1$ + C1$ =B1 & C1 列B行1、列C行1の文字列を連結この表の最後にあるNoteを参照してください。
=text(mean(B1:B10),".2")+" ± "+text(stddev(B1:B10),".4") =(TEXT(AVERAGE(B1:B10),"0.00") & " ± " & TEXT(STDEV(B1:B10),"0.0000")) 範囲の平均と標準偏差を計算し、指定された小数点以下の桁数に丸めてテキストに変換します。文字列「±」(たとえば0.56 ± 0.2740)を挿入して連結します。
=$B1 + $C1 =$B1 + $C1 列B行iと列C行iを足します。

このような$を使う式は通常、マウスでドラッグして他のセルに数式をコピーするために使用されます。以下の「式の拡張...」を参照してください。

=B1 - $C$1 =B1 - $C$1 B列1行目とC列1行目の差を返します。B1への参照は相対的なもので、ドラッグして他のセルへ自動入力すると、行参照、列参照ともに変化します。$C$1の参照は絶対的なので、下にドラッグしたり列を越えてドラッグしても変わりません。

以下の「式の拡張...」を参照してください。

=Sheet2!B1 - Sheet3!B1 =Sheet2!B1 - Sheet3!B1 Sheet2のB列1行目とSheet3のB列1行目の差を返します。
=[Book2]Sheet1!A1 - [Book3]Sheet1!A1 =[Book2]Sheet1!A1 - [Book3]Sheet1!A1 [Book2]Sheet1!A1と [Book3]Sheet1!A1の差を返します。
=[Book2]Sheet1!col(A)[1] - [Book3]Sheet1!col(A)[1] N/A [Book2]Sheet1!A1と [Book3]Sheet1!A1の差を返します。列と行の構文を代替します。
=[Book1]Sheet1!col(A)[1] + StartTime N/A 名前付き範囲「StartTime」値を[Book1]Sheet1!A列の値に加算します。
=total(Sheet2!A1:J10)+total(Sheet1!A1:J10) =SUM(Sheet2!A1:J10)+SUM(Sheet1!A1:J10) 2つの範囲Sheet2!A1:J10とSheet1!A1:J10の合計を返します。
=sin(pi*B1) =SIN(PI()*B1) pi * B列1行目の正弦を返します。
=date(A1, "dd.MM.yyyy HH:mm:ss.##") -- 指定された書式の日時文字列をとり、ユリウス日の値を返します。OriginとExcelの動作の違いに注意してください。
=today() =TODAY() 現在の日付をユリウス通日の値として返します。OriginとExcelの動作の違いに注意してください。
=A1<=98.6? (A1-98.6): Na() =IF(A1<98.6, A1-98.6, NA()) A1<=98.6ならA1-98.6を返し、そうでなければ欠損値を返します。 (LabTalk Utility FunctionNa()をご覧ください。)
=total(A[1:3]) =SUM(A1:A3) 列Aの1行目から3行目までの合計を返します。
=page.v1*B1 N/A システム変数v1(ページに格納されている)の値にB列1行目の値を掛けた値を返します。
=col(A)[D1]*A1 N/A 列Aの値に、ユーザーパラメータ1に列Aの行1の値を掛けた値を返します。

† Excelではユリウス暦の日付は使用されませんが、代わりに"time zero"が1900年1月1日(Windowsの既定値)または1904年1月1日(Macの既定値)のいずれかになる"serial number"システムが使用されます。Excelの日付をOriginのユリウス暦ベースのシステムに変換する方法については、FAQ-283: ExcelからOriginに日付データを変換するには?を参照してください。
‡ Originの today() 関数はユリウス暦の今日の日付を返すのに対し、ExcelのTODAY() 関数はExcelの「serial number」としての今日の日付を返します。

詳細は、こちらを確認してください:


Note: Originのスクリプト言語であるLabTalkでは、文字列変数の作成と表現に「$」を使用することに注意してください。
string greeting$ = "Hello"; // 「greeting」という名前の文字列変数を作成し、値「Hello」を割り当て
greeting$ =; // 「Hello」を返す

上表の2行目の例では、2つの文字列変数が「+」演算子を使用して連結されています。このコンテキストでは、「$」は絶対セル参照とは関係ありません。「$」が文字列の末尾にある場合、セル参照ではなく文字列変換に関連付けられます。

「$」文字列表記法で混乱する可能性のある別の例として、セルA1の文字列値「boston」を返したい場合を示します。

=A1 // 欠損値 (--)を返す
=A1$ //  "boston"を返す
=upper(A1$) // "BOSTON"を返す

他の文字列表記法の使用法:別のブックからセル値を返したいとします。いくつかの方法があります(より単純に[BookName]SheetName!ColNameRowIndexを含む)が、たとえば[A1$]SheetName!ColNameRowIndexを使用することもできます。ここで、セルA1にはソースブックの名前が含まれます。セルA1に「Book1」が含まれている場合、文字列は[Book1]として変換されます。シート参照を含む式の拡張を例に参照してください。

オートコンプリート

Origin 2022の場合、F(x)=ラベル行と列の数式値の設定ダイアログ)は、LabTalkでサポートされている関数名前付き範囲のオートコンプリートをサポートします。

この機能を使用したくない場合は、セルの数式/F(x)= および/または 列の数式に対して無効にすることができます :

  1. メニューの環境設定: システム変数をクリックします。
  2. 空の変数セルに、FACと入力します。
  3. 値セルに次のいずれかを入力します(値は加算されます):0 =オートコンプリートをオフにする、1 =セルの数式とF(x)=を有効にする、2 =列式を有効にする、3(デフォルト)=セルの数式/F(x)=および列式を有効にする
  4. OKをクリックしてダイアログを閉じます。

ユーザパラメータ行の式

Origin 2019では、列ラベル行の先頭を右クリックして、ユーザパラメータに指定した行全体に対してユーザパラメータの追加式の定義を行います。これは、ワークシートの数値の各列について統計値(平均、標準偏差など)を計算するのに役立ちます。

User parameter formula.png

セル式はプレースホルダー 「This」をワイルドカードとして、ワークシート内のそれぞれの列を参照することができます。(次のセクションを参照してください。)

セル式を作成すると、ユーザパラメータ列の先頭を右クリックして、ショートカットメニューで編集を選び、名前数式を編集します。ユーザパラメータ行のセルをダブルクリックして、数式を直接編集することもできます。

"This"を使用したワークシートの列の参照

前述のように、「This」は現在のデータセット(例えば値など)、つまり関連するワークシート列の値を参照するために使用されるイメージ枠です。ユーザーパラメータの行の数式を作成するときに 「This」が使用されていることが分かります。そして独自のセルおよび列式で 「This」を使用できます。

ユーザパラメータ行式を定義し、それを 行全体に拡張する場合は、上記の手順を使用して数式を定義します。また、公式をいくつかのユーザパラメータにのみ追加したい場合は、以下の操作を行います:

  1. ユーザ定義のパラメータを作成します。
  2. 数式を追加したいユーザ定義列のセルで"This"を使用して式を入力し、現在の列のデータを参照します(例: =max(This)  )。
  3. セルの外側をクリックして編集モードを終了します。計算された値が表示されます。
  4. セルを選択した状態で、セルの右下隅にマウスオーバーして(a) 「+」ハンドルをマウスでドラッグして計算を他のワークシート列に拡張するか、または(b)「+」ハンドルをダブルクリックして元の数式セルの右側にあるすべての行セルに数式を拡張します。
This Formula UPR.png


This」はワークシートのデータセル、例えば、データ列の最後などでも使用できます(例: "=total(This)")。行単位の計算でデータを表現するために使用することはできません

行または列の挿入、削除時のセル式の自動調整

列または行を挿入または削除すると、列の数式が自動的に調整されます。

Set Cell Values 4.png

式を行または列方向に拡張

セル式を多くのの行と列にわたって拡張すると、システムリソースに負担がかかり、Originがフリーズすることがあります。多くの場合、F(x)=セルまたは(同等だがより強力な)列値の設定ダイアログボックスを使用して、より簡単に同じタスクを実行できます。

セル式をセルに入力すると、次の方法でその式を他の行や列のセルに拡張することができます。(1)式セルの右下の角にマウスカーソルを移動し、(2)「+」に変化したらマウスを使ってドラッグして拡張します。

Origin Cell Formula Drag1.png
  • セル式をドラッグして他のセルに自動入力すると、列と行の参照が相対的に調整されます。つまり、セルC1からセルD1に式「=A1+B1」をドラッグすると、D1の数式は「=B1+C1」に調整されます。このような場合、セル参照は「相対的」であると言えます。
  • セル値への絶対 参照を作成するには、列参照と行参照の両方の前に「$」文字を付けます(例: = $A$1)。他のセルに「=$A$1」をドラッグしても、セル参照は調整されません。コピーあるいはドラッグしたすべてのセルで列A、行1の値と等しくなります。
  • セル値への複合 参照を行うには、調整したくない要素(列または行)の前に「$」文字を配置します。たとえば、「$A1」を含む数式を他の行と列のセルにドラッグすると、列参照「A」はロックされ、行参照「1」は連続する行ごとに1ずつ増加します。
Cell Form Extend All.png

[i]を使用して、相対的な行参照を作成することもできます。[i]は、現在の行への参照として認識される変数であるため、絶対参照は作成されません(つまり、セル式「=B[i]」は、その数式が入力された行と同じ行の列Bの値を返します)。次の図は、同じ値を返す同等の形式を示しています。

Cell Form Equivalent.png

数式を列の下方向にドラッグして拡張するのではなく、最初の数式が入力されているセルの右下隅にカーソルを置き、十字線をダブルクリックします。

Cell formula 2 click extend.png

シート参照を含む式の拡張

シート参照を含むセル数式をドラッグすると、行と列の参照は自動調整されますが、シート参照は自動調整されないことに注意してください(次の例を参照)。

Cell formula autofill sheet name 01.png

つまり、複数のシートの特定のセルを参照したい場合には、マウスでドラッグにより列に値を入力しようとすると、シート参照の自動調整がされません。シート参照を自動調整する直接的な方法はありませんが、回避策はあります。ワークシートの列に必要なシート名(文字列)を入力し、特別な構文を使用して、完全なセル参照を形成する列と行のフラグメント(シート文字列と組み合わせ)でそれらの文字列を連結するような操作です。

Originのデータセット命名構文(範囲表記)では、シート名またはシートインデックスの2つの方法でワークシートを参照できます。つまり、Sheet1 を参照するには、Sheet1!または1!を使用します。感嘆符(!) は、範囲表記においてシートと列[行] を分離するために使用します((例:Sheet1!Col(1)[1]またはSheet1!A[1]またはSheet1!A1)。

Cell formula autofill sheet name 02.png

上の例では、列Aに行番号が、列Bにシート名が自動入力されています。これらのセルへの参照と!Col[row]"フラグメントを組み合わせることで、"1!Col[row]" または "SheetN!Col[row]"の形になります。

連結された文字列の一般的な形式は、==SheetOrIndex$ + "!ColumnRow" (または "!Column[Row]") です。

ここで、シート文字列は、シート参照の自動調整を作成するのと同じシートにある必要があることに注意してください。

Cell formula autofill sheet name 03.png

ワークシートセル値を参照する以前の方法

セル値、変数値、文字列をワークシートセルに挿入する以前の方法は、限定的に計算で使用できます(例: var://max(col(A))*2)。新しい表記法の方が便利ですが、ユーザーが認識できるように記します。

セル式を使用する上での制限

Origin 2018から、MS Excelのシンタックスと似た(同じではない)セル式を使用して、セル値、関数、変数、定数を使用したセルレベルの計算を実行できます。

以下の制限があります。

  • MS Excelファイルをインポートしても、Excel式はインポートされません。Origin 2018 SR0では、計算された値のみがインポートされます。Microsoft Excelと操作を参照してください。
  • ワークシートの列ラベル行の、ロングネーム単位コメントパラメータ行でのセル式はサポートされません。これらはユーザー定義パラメーターでのみサポートされています。
  • Originでは、変数iは行番号を示し、jは列番号を示します(システム変数を参照)。行番号の変数i を組み込んだ式(「=B[i] - C[i]」など)は、ドラッグすることで列を下に拡張できますが、複数の列範囲の参照と変数i またはj を組み合わせた式(「=total(A[i]:D[i])」)はサポートされていません。

ユーザが認識すべき2つの"@"システム変数があります。

  • 現在のセッションでセル式を無効にするには、スクリプトウィンドウ(ウィンドウ: スクリプトウィンドウ)を開いて次のように入力します。
@esc=0 <Enter>
  • 現在のセッションでExcel形式の表記法( "A1:C10"などのセル参照と列参照)を無効にするには、スクリプトウィンドウ(ウィンドウ:スクリプトウィンドウ)を開いて次のように入力します。
@xlr=0 <Enter>