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行目で指定された書式の日付/時刻文字列をとり、ユリウス日の値を返します
ワークシートには編集モードがあります(メニューの編集:編集モード)
![]() | 特定のセル値の背後にある数式を表示するために、必ず編集モードをオンにしなければいけないわけではありません。セルが選択されると、数式がステータスバーの左下隅に表示されます。 |
Origin2021で導入された数式バーは、Excelのようにセルまたは列の数式/式を入力できます。数式バーを使用してセル式を入力する必要はありませんが、関数検索、インタラクティブな範囲選択、および式、特にセル幅を超える長い式の見やすさの向上という利点があります。セルまたはセル範囲を範囲変数として定義することもできます。
ワークブックをアクティブにして数式バーを表示するには、
もしくは、
セル(データセルまたはF(x)=)に式を入力するには、セルをクリックしてから、次の操作を行います。
または、
式が完成したら、チェックボタンをクリックするか、Enterキーを押します。
セル式にデータ範囲を挿入するには、
Note:別のブックのデータ範囲の挿入はサポートされていません。
式が特に長い場合にセル式全体を表示および編集するには、
または、
選択したセル(セル範囲)を範囲変数として定義するには、
データ参照に加え、セル式には変数、演算子、関数、定数を含めることができます。
データ参照 | 変数 | 演算子 | 関数 | 定数 |
---|---|---|---|---|
|
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)= および/または 列の数式に対して無効にすることができます :
Origin 2019では、列ラベル行の先頭を右クリックして、ユーザパラメータに指定した行全体に対してユーザパラメータの追加と式の定義を行います。これは、ワークシートの数値の各列について統計値(平均、標準偏差など)を計算するのに役立ちます。
セル式はプレースホルダー 「This」をワイルドカードとして、ワークシート内のそれぞれの列を参照することができます。(次のセクションを参照してください。)
セル式を作成すると、ユーザパラメータ列の先頭を右クリックして、ショートカットメニューで編集を選び、名前と数式を編集します。ユーザパラメータ行のセルをダブルクリックして、数式を直接編集することもできます。
前述のように、「This」は現在のデータセット(例えば値など)、つまり関連するワークシート列の値を参照するために使用されるイメージ枠です。ユーザーパラメータの行の数式を作成するときに 「This」が使用されていることが分かります。そして独自のセルおよび列式で 「This」を使用できます。
ユーザパラメータ行式を定義し、それを 行全体に拡張する場合は、上記の手順を使用して数式を定義します。また、公式をいくつかのユーザパラメータにのみ追加したい場合は、以下の操作を行います:
=max(This)
)。
「This」はワークシートのデータセル、例えば、データ列の最後などでも使用できます(例: "=total(This)")。行単位の計算でデータを表現するために使用することはできません。
列または行を挿入または削除すると、列の数式が自動的に調整されます。
![]() | セル式を多くのの行と列にわたって拡張すると、システムリソースに負担がかかり、Originがフリーズすることがあります。多くの場合、F(x)=セルまたは(同等だがより強力な)列値の設定ダイアログボックスを使用して、より簡単に同じタスクを実行できます。 |
セル式をセルに入力すると、次の方法でその式を他の行や列のセルに拡張することができます。(1)式セルの右下の角にマウスカーソルを移動し、(2)「+」に変化したらマウスを使ってドラッグして拡張します。
![]() | [i]を使用して、相対的な行参照を作成することもできます。[i]は、現在の行への参照として認識される変数であるため、絶対参照は作成されません(つまり、セル式「=B[i]」は、その数式が入力された行と同じ行の列Bの値を返します)。次の図は、同じ値を返す同等の形式を示しています。 |
![]() | 数式を列の下方向にドラッグして拡張するのではなく、最初の数式が入力されているセルの右下隅にカーソルを置き、十字線をダブルクリックします。 |
シート参照を含むセル数式をドラッグすると、行と列の参照は自動調整されますが、シート参照は自動調整されないことに注意してください(次の例を参照)。
つまり、複数のシートの特定のセルを参照したい場合には、マウスでドラッグにより列に値を入力しようとすると、シート参照の自動調整がされません。シート参照を自動調整する直接的な方法はありませんが、回避策はあります。ワークシートの列に必要なシート名(文字列)を入力し、特別な構文を使用して、完全なセル参照を形成する列と行のフラグメント(シート文字列と組み合わせ)でそれらの文字列を連結するような操作です。
Originのデータセット命名構文(範囲表記)では、シート名またはシートインデックスの2つの方法でワークシートを参照できます。つまり、Sheet1 を参照するには、Sheet1!または1!を使用します。感嘆符(!) は、範囲表記においてシートと列[行] を分離するために使用します((例:Sheet1!Col(1)[1]またはSheet1!A[1]またはSheet1!A1)。
上の例では、列Aに行番号が、列Bにシート名が自動入力されています。これらのセルへの参照と!Col[row]"フラグメントを組み合わせることで、"1!Col[row]" または "SheetN!Col[row]"の形になります。
連結された文字列の一般的な形式は、==SheetOrIndex$ + "!ColumnRow" (または "!Column[Row]") です。
ここで、シート文字列は、シート参照の自動調整を作成するのと同じシートにある必要があることに注意してください。
セル値、変数値、文字列をワークシートセルに挿入する以前の方法は、限定的に計算で使用できます(例: var://max(col(A))*2
)。新しい表記法の方が便利ですが、ユーザーが認識できるように記します。
Origin 2018から、MS Excelのシンタックスと似た(同じではない)セル式を使用して、セル値、関数、変数、定数を使用したセルレベルの計算を実行できます。
以下の制限があります。
![]() | ユーザが認識すべき2つの"@"システム変数があります。
@esc=0 <Enter>
@xlr=0 <Enter>
|