数式を利用してセルの値を設定する
目次
セル式
Origin 2018以降、Originはワークシートのデータセルとユーザ定義の列ラベルセルの両方でセル式をサポートしています。
- セル式はイコール記号"=" から記述します。
- Originの組み込みのLabtalk関数を使用します。
- 計算中のデータセル、ラベルセル、列、名前付き範囲、メタデータ、変数、定数などにアクセスします
- 数式をドラッグして他のセルに広げます
- 列/行が挿入または削除されたとき、または他の場所にコピーされたときに数式を自動調整します
数式セルを一目で区別するには、表示:数式/リンクされたセルを強調表示を選択して、セルが異なる背景色で強調表示されるようにします。 |
列セル参照構文
Excel と同様の表記法で列とセルを参照できるようにするには、スプレッドシートセル表記(SCN)を有効にする必要があります。
| 列 | セル | 範囲 | ラベル行 |
|---|---|---|---|
|
|
|
|
|
サンプル
このサンプルは相対参照のみを示しています。絶対参照の場合は、列または行部分の前に$を追加します。下の式を行または列方向に拡張セクションを参照してください。
| 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 Function Na()をご覧ください。) |
| =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)を挿入して連結します。 |
式を行または列方向に拡張
数式が含まれるセルを選択し、その右下角にマウスを置き、カーソルが + になったら、下、横、斜めにドラッグします。
数式内の列と行の参照は相対的に拡張されます。
絶対参照をする部分の前に $ を置きます。例えば、行部分を固定するには、B$1のように行部分の前に $ を追加します。列とセルの両方を固定するには、$B$1のように列部分と行部分の両方の前に $文字を置きます。
+のダブルクリックもサポートされています。データ領域の場合、列の一番下まで自動入力されます。ラベル領域の場合、行の一番端まで自動入力されます。
角括弧内の行参照(例: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, ....を得ることができると期待します。
回避策:
- 上記の例では、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を埋めます。
フラッシュフィル
左側の列に明確なパターンが表示されており、ターゲット列の最初のセルに予想される結果を入力すると、Originはそのパターンを自動的に検出し、文字列や数値の抽出、結合、再構築の方法を推測します。そして、ポップアッププレビューで可能な関数や数式を提案します。その後、次の方法で列を入力できます。
- 固定値 (Ctrl + Shift + E):ソース列が変更されても固定された結果として値が表示されます。
- 動的数式 (Ctrl + Shift + Enter): ソース列が変更されると、自動的に更新される動的な結果が表示されます。
「フラッシュフィル」を使うことでできること
- 列から必要な部分を抽出
例えば、1つの列から名字と名前を分割したり、ファイルパスから必要な文字列を抽出したりすることができます。
- 列を結合
- いくつかの種類の書式変更
制限
セル数式を使用する場合の既知の問題をいくつか示します。
- MS Excelファイルをインポートしても、Excel式はインポートされません。計算された値のみがインポートされます。Microsoft Excelと操作を参照してください。
- セル式は、ロングネーム、単位、コメントなどの組み込みの列ラベル行ではサポートされておらず、ユーザ定義パラメータ行でのみサポートされます。
- 変数iとjは、Originでは行と列のインデックス付けに使用されるため(システム変数を参照)、A[i]、col(A)[i]、wcol(j)[1]、wcol(j)[i] は引き続きサポートされます。セル式では機能しますが、場合によっては数式を拡張するとうまく機能しません。
- wcol(j)は、j番目の列を参照します。Jの値は複数列の数式以外では不定であるため、うまく機能しない可能性があります。例えば、文字列を返す関数の引数で使用すると機能しません。可能な場合は、代わりにThisを使用するようにしてください。
- セル式を多くの行と列にわたって拡張すると、システムリソースに負担がかかり、Originがフリーズすることがあります。多くの場合、列値の設定を使用すると、同じタスクをより簡単に実行できます。
数式バー
Origin2021で導入された 表示:数式バー は、Excelのようにセルまたは列の数式/式を入力・表示できます。セル式を入力するために数式バーを使用する必要はありませんが、次のような利点があります。
- セル幅を超える長い式を入力・表示するのが簡単です。
-
ボタンをクリックして、関数の検索と挿入ダイアログを開き、関数を検索します。 - 列ヘッダやセルをクリックしたりドラッグすることで範囲を選択し、式でインタラクティブな範囲選択ができます。Note: 別のブックについてはサポートされていません
- 範囲を選択して名前付き範囲を定義し、数式バーの左側に名前を入力します
- 数式バーの左側で範囲を選択して、名前付き範囲を見つけます。
Note:フォントサイズを変更するには、 システム変数 @FBFS の値を変更します(デフォルトでは「130」です)。
ユーザーパラメータ行の式
Origin 2019では、列ラベル行の先頭を右クリックして、ユーザパラメータに指定した行全体に対してユーザパラメータの追加と命名と式の定義を行います。これは、ワークシートの数値の各列について主要な統計値(平均、標準偏差など)を計算するのに役立ちます。
セル式はプレースホルダー 「This」をワイルドカードとして、ワークシート内のそれぞれの列を参照することができます。(次のセクションを参照してください。)
セル式を作成すると、ユーザパラメータ列の先頭を右クリックして、ショートカットメニューで編集を選び、名前と数式を編集します。ユーザパラメータ行のセルをダブルクリックして、セル式を直接編集することもできます。
ミニツールバーのユーザパラメータに適用ボタン |
関連するシステム変数
- @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 - 両方を有効にする
















