式を使ってセル値を設定


セル式

Origin 2018以降、Originはワークシートのデータセルとユーザ定義の列ラベルセルの両方でセル式をサポートしています。

  • セル式はイコール記号"=" から記述します。
  • Originの組み込みのLabtalk関数を使用します。
  • 計算中のデータセル、ラベルセル、列、名前付き範囲、メタデータ、変数定数などにアクセスします
  • 数式をドラッグして他のセルに広げます
  • 列/行が挿入または削除されたとき、または他の場所にコピーされたときに数式を自動調整します
Cell formula intro.gif

列セル参照構文

Excel と同様の表記法で列とセルを参照できるようにするには、スプレッドシートセル表記(SCN)を有効にする必要があります。

セル 範囲 ラベル行
  • A - A列
  • This - 現在の列
  • A1, A[1] - A列1行目
  • A0 - A列最終行
  • A[i] - A列 現在の行
  • 現在の列の行にはThis[1], This[i]を使用します
  • A1:A10, A[1:10] - 列A、行1-10
  • A1:B0 - 列A、行1から列B、最終行
  • A[i:i+2] - 列A、現在の行から2行先まで
  • This[i-2:i-1] - 現在の列、現在の行の前の2行
  • A[C]$ - 列A、コメントセルの文字列
  • A[EID]$ - 列A、ユーザ定義パラメータ行EIDの文字列
  • A[D1] - 列A、最初のユーザ定義パラメータの値
  • 現在の列のラベルセルには、This[C]$, This[EID]$, This[D1]を使用します。
  1. データが別のシートまたはブックにある場合、sheetname!, sheetindex!, [bookname]sheetname!, [bookname]sheetindex! を列セル参照の前に追加します。
  2. 文字列の列セル参照の後には、A1$, A$のように$を追加します。
  3. 部分範囲の場合、[ ]内に:が必要です。そのため、A[1]:A[10] および A[1]:D[10] はサポートされていません。同じ列には A[1:10] を使用し、異なる列には A1:D10 を使用してください。
  4. 絶対参照の場合は、列または行部分の前に$を追加します。下の式を行または列方向に拡張セクションを参照してください。
  5. 現在のA1にブック名が含まれている場合は、== を使用して範囲文字列と範囲文字列を含む式を作成します。例えば、=="["+A1$+"]"+"1!C1" は、A1で指定されたブックの1番目のシートのC1セルを参照します。=="1000+["+A1$+"]"+"1!C1*0.3" はこのようなC1セルに基づいた式になります。

サンプル

このサンプルは相対参照のみを示しています。絶対参照の場合は、列または行部分の前に $ を追加します。下の式を行または列方向に拡張セクションを参照してください。

Origin Excel 説明
=B1 - C1 =B1-C1 B列1行目とC列1行目の差を返します。
=B - B0 N/A B列の現在の行と B 列の最終行の差を返します。
=B1-mean(B) =B1-average(B:B) B1とB列の平均の差
=mean(This) NA 現在の列の平均を返します
=B1$ + C1$ =B1 & C1 B1とC1の文字列を連結します。
=IF(A1<98.6, A1-98.6, NA()) =IF(A1<98.6, A1-98.6, NA()) A1<=98.6ならA1-98.6を返し、そうでなければ欠損値を返します。 (LabTalk Utility FunctionNa()をご覧ください。)
=col(A)[D1]*A1 N/A 列Aのユーザパラメータ1の値に、A列1行目の値を乗算
=lookup(This[element]$, [book1]1!1, [book1]1!2)$ N/A 列内のelement列ラベルの値を検索し、見つかった要素と同じインデックスを持つ別の列の値を返します。(ユーザパラメータ行セクションの動画を参照してください)
=page.v1*B1 N/A システム変数v1(ページに格納されている)の値にB列1行目の値を掛けた値
=A1-page.info.File1.Info.FileDate N/A A1 - ページに保存されているインポートされたファイルのファイル日付情報を差し引いたもので、A1も日付であると仮定します。
=date(A1, "dd.MM.yyyy HH:mm:ss.##") -- 指定された日時形式のA1のユリウス日の値。OriginとExcelの動作の違いに注意してください。
=total(A[1:3]) =SUM(A1:A3) A1 から A3の合計。
=Total(wcol(j-1)[1:3]) N/A 現在の列のすぐ左における1~3行の合計。
=total(Sheet2!A1:J10)+total(Sheet1!A1:J10) =SUM(Sheet2!A1:J10)+SUM(Sheet1!A1:J10) sheet1とsheet2の両方のA1からJ10の合計
=Sheet2!B1 - Sheet3!B1 =Sheet2!B1 - Sheet3!B1 2シートのB1の差
=[Book2]Sheet1!A1 - [Book3]Sheet1!A1 =[Book2]Sheet1!A1 - [Book3]Sheet1!A1 異なるブックにあるA1の差
=[Book2]Sheet1!col(A)[1] - [Book3]Sheet1!col(A)[1] N/A 古いcol(name)[row]構文を使用した異なるBookのA1の差
=[Book1]Sheet1!col(A)[1] + StartTime N/A 名前付き範囲「StartTime」の値をBook1のSheet1のA1の値に加算します。
=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)を挿入して連結します。

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

数式が含まれるセルを選択し、その右下角にマウスを置き、カーソルが + になったら、下、横、斜めにドラッグします。

数式内の列と行の参照は相対的に拡張されます。

  • 縦にドラッグすると行部分のみが変化します
Cell formula relative columnwise.gif
  • 横にドラッグすると列部分のみが変化します
Cell formula relative rowwise.gif
  • 斜めにドラッグすると、縦横両方向が変化します
Cell formula diagonal autofill.gif

絶対参照をする部分の前に $ を置きます。例えば、行部分を固定するには、B$1のように行部分の前に $ を追加します。列とセルの両方を固定するには、$B$1のように列部分と行部分の両方の前に $文字を置きます。

Cell formula absolute columnwise.gif

+のダブルクリックもサポートされています。データ領域の場合、列の一番下まで自動入力されます。ラベル領域の場合、行の一番端まで自動入力されます。

Cell formula label row autofill.gif

角括弧内の行参照(例:sum(A)[1]A[1])の場合、ドラッグするときにCtrlキーを押して相対参照を維持します。


シート部分の拡張

Originは、数式を拡張する際の相対シート参照をサポートしていません。 例えば、全てのSensorシートのB1セルを新しいシートに配置するにはどうすればよいでしょうか。ユーザは =Sensor01!B$1または=1!B$1を入力して数式をドラッグし、=Sensor02!B$1, =Sensor03!B$1, ...もしくは=2!B$1, =3!B$1, ....を得ることができると期待します。

回避策:

  • 変数i は、 !部分の前に$(i)を置くことで行インデックスを意味します。シートのインデックスとして使用できます
    Cell formula relative sheet.gif
  • 列にシートのインデックスまたは名前を入力し、==シンタックスを使用して列と行の部分を連結し、完全なセル参照を形成します。
    Cell formula relative sheet double equal.gif
上記の例では、A1$A1の内容を文字列に変換します。"!B1"はリテラル文字列です。==A1$+"!B1" は、それらを =Sensor01!B1 に連結し、Sensor01 シートのB1を参照します。
Note
  • シート文字列は、シート参照の自動調整を作成するのと同じシートにある必要があることに注意してください。
  • ==A1$+"!B1+10" は Sensor01!B1+10 という式を作成します。
  • シート文字列に「-」などの特殊文字が含まれている場合は、次のようにシート名を二重引用符で囲みます。:==char(34)$+A1$+char(34)$+"!B1+10".

ブック部分の拡張

==構文は、ブック、シート、列、行の部分を連結して完全なセル参照を形成することもできます。

次の例では、ブックのショートネームを列Aに配置し、セル数式を使用して列Bに各ブックのB2値を入力する方法が示されています。

B1セルでは、=="["+A1$+"]"+"Sheet1!B2"と入力します。B1セルの右下部分を12行目までクリック&ドラッグして、12個のブックのB2の値を入力します。

Cell formula relative book double quote.png

制限

セル数式を使用する場合の既知の問題をいくつか示します。

  • MS Excelファイルをインポートしても、Excel式はインポートされません。計算された値のみがインポートされます。Microsoft Excelと操作を参照してください。
  • セル式は、ロングネーム単位コメントなどの組み込みの列ラベル行ではサポートされておらず、ユーザ定義パラメータでのみサポートされます。
  • 変数ijは、Originでは行と列のインデックス付けに使用されるため(システム変数を参照)、A[i]、col(A)[i]、wcol(j)[1]、wcol(j)[i] は引き続きサポートされます。セル式では機能しますが、場合によっては数式を拡張するとうまく機能しません。
  • wcol(j)は、j番目の列を参照します。Jの値は複数列の数式以外では不定であるため、うまく機能しない可能性があります。例えば、文字列を返す関数の引数で使用すると機能しません。可能な場合は、代わりにThisを使用するようにしてください。
  • セル式を多くのの行と列にわたって拡張すると、システムリソースに負担がかかり、Originがフリーズすることがあります。多くの場合、列値の設定を使用すると、同じタスクをより簡単に実行できます。

数式バー

Origin2021で導入された 表示:数式バー は、Excelのようにセルまたは列の数式/式を入力・表示できます。セル式を入力するために数式バーを使用する必要はありませんが、次のような利点があります。

  • セル幅を超える長い式を入力・表示するのが簡単です。
  • FB FunSel.pngボタンをクリックして、関数の検索と挿入ダイアログを開き、関数を検索します。
  • 列ヘッダやセルをクリックしたりドラッグすることで範囲を選択し、式でインタラクティブな範囲選択ができます。Note: 別のブックについてはサポートされていません
  • 範囲を選択して名前付き範囲を定義し、数式バーの左側に名前を入力します
  • 数式バーの左側で範囲を選択して、名前付き範囲を見つけます。

UG Formula Bar UI.png


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

ユーザパラメータ行の式

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

User parameter formula.png

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

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

headerRowLookup1.gif

ミニツールバーのユーザパラメータに適用ボタンPopup Apply User Parameters to.pngを使用して、式で定義されたユーザパラメータ行を複数のワークシートにコピーできます。詳細は、こちらをご覧下さいApply User Parameters to Other Sheets.png

関連するシステム変数

  • @esc

ワークシートのセル式を有効または無効にします。 1=有効、0=無効

  • @xlr

"=total(A1:A10)" or "=total(A1:C1)"" のようなコロン文字 ":"を組み込んだExcelスタイルのマルチセル参照の使用を制御します。
1=有効、0=無効

Note: "=total(A[1:10]) などの Origin形式の参照は影響を受けません。ただし、この表記では複数列のサポートはありません。複数列の範囲指定では、Excel式の表記法 (例: 「=total(A1:D10)」) を使用する必要があります。

  • @fac

列の数式 (値の設定) およびセルの数式でのオートコンプリートのサポートを制御します。
0 - 両方を無効にする、1 - セル式を有効にする、2 - 列式を有効にする、3 - 両方を有効にする

関連項目