特定の条件に基づいてフィールドの値を返す計算式です。例えば、条件を満たした場合に「Yes」を返したり、条件に一致するフィールドの値を合計したりできます。
以下はサポートされている計算式の一覧です。なお、以下の計算式は大文字・小文字を区別します。
| 関数 | 概要 |
|---|---|
| IF(value==condition,[value_if_true],[value_if_false]) | IF式は、指定だれた条件に合致すればTRUE、合致しなければFALSEを返す。詳細はこちら。 |
| IFS() | 複数の条件を満たすことを確認し、最初の TRUE 条件に対応する値を返す。詳細はこちら。 |
| LOOKUP(value,lookup_list,[result_list]) | lookup_listから値を検索し、result_listの対応位置に値を返す。詳細はこちら。 |
| AND(logical1, [logical2], ...) | すべての条件を満たす場合に TRUE を、1つ以上の条件を満たさない場合に FALSE を返す。詳細はこちら。 |
| OR(logical1, [logical2], ...) | いずれかの条件を満たしたときに TRUE を、いずれの条件も満たさなかったときに FALSE を返す。詳細はこちら。 |
| NOT(logical) | テスト条件が FALSE の場合は TRUE を、TRUE の場合は FALSE を返します。詳細はこちら。 |
| COUNTIF(criterai_range,criteria, count_range) | 計算子テーブルの各カラムが判定基準を満たした回数の合計を返す。詳細はこちら。 |
| COUNTIFS(criteria_range1,criteria1,[criteria_range2,criteria2]...) | 追加範囲のうち、該当する基準を満たす値(回数)の合計を返す。詳細はこちら。 |
| SUMIF(range,criteria,[sum_range]) | 判定基準を満たした子テーブルの各列の値の合計を返す。詳細はこちら。 |
| SUMIFS(sum_range,criteria_range1,criteria1,[criteria_range2, criteria2],...) | 複数の判断基準を満たす各列の値の合計を計算し、返す。詳細はこちら。 |
| UPDATEIF(condition,value_if_true) | フィールドの値は、条件を満たしたときのみ更新される。詳細はこちら。 |
| MAXIFS(max_range, criteria_range1, criteria1, [criteria_range2, criteria2], ...) | 指定されたフィールド範囲の最大値を、指定された条件または基準に基づいて返す。詳細はこちら。 |
| MINIFS(min_range, criteria_range1, criteria1, [criteria_range2, criteria2], ...) | 指定されたフィールド範囲の最小値を、指定された条件または基準に基づいて返す。詳細はこちら。 |
Ragic では条件式を使用できます。なお、フィールドタイプを変更すると、場合によっては計算結果に影響することがありますのでご注意ください。
注意: 条件式を設定する際、以下の 2 つのケースでは、参照するフィールドに「.RAW」を付ける必要があります。
1. 演算子「=」を使用して、条件式内で 2 つのフィールド同士を比較する場合。 ただし、1 つのフィールドを固定値と比較する場合は、「.RAW」は不要です。
2. 数値フィールドに条件式を設定し、演算子「=」を使って 文字列フィールド(テキスト、選択、日付など)を固定の文字列値と比較する場合 (結果として数値を返すケース)。 数値フィールド同士を演算子「=」で比較する場合は、「.RAW」は不要です。
「.RAW」の詳細については、こちらのセクションをご参照ください。
日付フィールドは日数として計算されます。
また、条件付き計算式は ネスト することも可能です。
IF 関数は、指定した条件が TRUE の場合に 1 つの値を返し、FALSE の場合には別の値を返します。
| 関数 | 構文 |
|---|---|
| IF | IF(value==condition,value_if_true,value_if_false) |
例:
基本例: IF(A2==10, 10, 0)
参照フィールド A2 の値が 10 の場合、このフィールドの値は 10 になります。A2 がそれ以外の値の場合は 0 になります。
文字列を結果として返す例:IF(A1==1, 'True', 'False')
参照フィールド A1 の値が 1 の場合、このフィールドの値は「True」になります。それ以外の場合は「False」になります。
実用例: IF(A2>=60, 'Yes', 'No')
年齢フィールドの値が 60 以上の場合、「シニア割引の対象?」フィールドの値は「Yes」になります。 それ以外の場合は「No」になります。
注意:
Ragic では、IF 関数の旧構文も引き続きサポートされています。
Value=='condition' ? 'value_if_true' : 'value_if_false'
基本例: A1=='open' ? 'O' : 'C'
A1 が open の場合は O を返し、それ以外の場合は C を返します。
条件式で、演算子「=」を使用して 2 つのフィールド同士が等しいかどうかを条件として参照する場合は、参照する各フィールドの後ろに .RAW を付けてください。
| 構文 |
|---|
| IF(field1.RAW=field2.RAW,value_if_true,value_if_false) |
例:
基本例 1:IF(A1.RAW=A2.RAW, 1, 0)
参照フィールド A1 の値がフィールド A2 の値と等しい場合は 1 を返し、それ以外の場合は 0 を返します。
基本例 2: IF(A1.RAW=A2.RAW, 'Open', 'Closed')
参照フィールド A1 の値がフィールド A2 の値と等しい場合は「Open」を返し、それ以外の場合は「Closed」を返します。
| Syntax |
|---|
| IF(string_field1.RAW="string",numeric_value_if_true,numeric_value_if_false) |
例: IF(A1.RAW="Yes", 1, 0)
参照している文字列フィールド A1 の値が「Yes」の場合は 1 を返し、それ以外の場合は 0 を返します。
演算子「=」を使用して 数値フィールドを固定値と比較する場合は、「.RAW」を付ける必要はありません。
例: IF(A1=1, 'YES', 'NO')
参照フィールド A1 の値が 1 の場合は「YES」を返し、それ以外の場合は「NO」を返します。
計算式を使用してフィールドが空かどうかを判定する場合は、参照するフィールドの後ろに .RAW を付ける必要があります。
例えば、IF(A8.RAW='', "TRUE", "FALSE") という計算式は、セル A8 のフィールドが空かどうかを判定するために使用されます。このフィールドの値が 0 である可能性があるため、.RAW を付ける必要があります。
注意:
計算式内で参照フィールドに .RAW を付けない場合、数値の「0」も空の値として判定されてしまいます。
例えば、A1 のフィールドが数値「10001」を含むフリーテキストフィールドであり、A2 のフィールドがリンクフィールドで、条件付き計算式によって A1 の値「10001」を参照して返す場合、計算式は以下のように設定する必要があります。
IF(A1!='', A1.RAW)
LEFT()、RIGHT()、MID() などの関数を使用して参照フィールドから文字列を取得する場合は、参照するフィールドの後ろに +"" を追加してください。
例:
IF(A1="Yes", A5, LEFT(A5+"", 2))
参照フィールド A1 の値が「Yes」の場合、このフィールドの値は A5 のフィールド値になります。
A1 がそれ以外の値の場合は、A5 の先頭 2 桁の値が返されます。
システムでは、IF() 計算式の中で TODAY() や NOW() の値を直接参照することはできません。
そのため、まず TODAY() または NOW() の値を設定した別のフィールドを作成し、そのフィールドを参照する必要があります。
例:
日付フィールド A1 の値を TODAY() と比較したい場合、A2 フィールドを作成し、計算式に TODAY() を設定します。
その後、以下の計算式を適用します:
IF(A1>A2, "Valid", "Expired")
参照フィールド A1 の値が TODAY() より大きい場合、このフィールドの値は「Valid」になります。
A1 の値が TODAY() より小さい場合は、「Expired」が返されます。
一方で、TODAY() の計算式、または TODAY() を設定したフィールドを IF() 計算式内の条件判定用フィールドとして使用したい場合は、
A2 フィールドを次のように設定して、日付差分を計算します: A1 - TODAY()
その後、以下の計算式を適用します:
IF(A2>0, "Valid", "Expired")
注意:
TODAY() や NOW() の値は、レコード保存後に自動再計算されません。
TODAY() または NOW() の値を再計算する必要がある場合は、毎日ワークフローを適用してください。
1. 日付以外のフィールドに設定して、日付フィールド同士の値を比較する。
例えば、A1 と A2 が日付フィールドで、A2 に TODAY() が設定されている場合、 A4 フィールドに次の計算式を入力します:
IF(A1>A2, "Yes", "No")

2. 数値フィールドに設定して、日付フィールドに対する加算・減算を行う
例えば、A4 に IF(A1-1>A2, "Yes", "No") という計算式を直接入力することはサポートされていません。
この場合、数値フィールド C1 と C2 を新たに作成する必要があります。
C1 には計算式 A1-1 を入力し、C2 には A2 を入力します。
そのうえで、A4 の計算式を IF(C1>C2, "Yes", "No") に変更してください。

COUNTIF 関数は、指定した条件を満たす子テーブル内の行数をカウントします。
例えば、レシート内で特定の商品が何回出現したかを数える場合などに使用できます。
| 関数 | 構文 |
|---|---|
| COUNTIF | COUNTIF(criteria_range,criteria) |
引数:
criteria_range(必須):指定した条件に一致する値を確認する対象となる子テーブルフィールドを指定します。
criteria(必須):criteria_range 内のどのセルをカウント対象とするかを定義する条件です。数値、式、他のフィールドへの参照、または文字列を指定できます。詳細は以下の表をご参照ください。
| 用途 | 数式入力例 |
|---|---|
| 数値を指定 | "8" |
| 数値の比較 | "> 8"、"< 8"、"!= 8" |
| 文字列を指定 | "apple" |
| 文字列の不一致判定 | "!='apple'"(外側と内側で異なる引用符を使用してください。例:外側はダブルクォーテーション、内側はシングルクォーテーション) |
| 子テーブルフィールドを参照 | A4 (ダブルクォーテーションや「=」は不要です。フィールド名のみを記述してください) |
| 子テーブルフィールドとの比較 | "> A4"、"< A4"、"!=A4" |
注意: COUNTIF は 1 つの子テーブルのみを参照でき、独立フィールドに設定する必要があります。
また、指定できる条件は 1 つのみのため、複数条件を適用したい場合は COUNTIFS を使用してください。
例: フィールド A9 に COUNTIF(A4, 'りんご') という計算式を入力すると、
子テーブルの列 A4 において、商品名が りんご の行数が返されます。

| 関数 | 構文 |
|---|---|
| COUNTIFS | COUNTIFS(criteria_range1,criteria1,[criteria_range2,criteria2]...) |
引数:
criteria_range1(必須):指定した条件に一致する値を確認する対象となる子テーブルフィールドを指定します。
criteria1(必須):criteria_range1 内のどのセルをカウント対象とするかを定義する条件です。数値、式、他のフィールドへの参照、または文字列を指定できます。詳細は以下の表をご参照ください。
| 用途 | 数式入力例 |
|---|---|
| 数値を指定 | "8" |
| 数値の比較 | "> 8"、"< 8"、"!= 8" |
| 文字列を指定 | "apple" |
| 文字列の不一致判定 | "!='apple'"(外側と内側で異なる引用符を使用してください。例:外側はダブルクォーテーション、内側はシングルクォーテーション) |
| 子テーブルフィールドを参照 | A4 (ダブルクォーテーションや「=」は不要です。フィールド名のみを記述してください) |
| 子テーブルフィールドとの比較 | "> A4"、"< A4"、"!=A4" |
criteria_range2、criteria2,…(任意):追加の criteria_range が、それぞれ対応する条件に一致した場合に行がカウントされます。
注意: COUNTIFS は 1 つの子テーブルのみを参照でき、独立フィールドに設定する必要があります。
SUMIF 関数は、指定した 1 つの条件を満たす子テーブル内の行に格納されている値を合計します。
例えば、レシート内に特定の商品が含まれている場合に、その商品の金額を合計する用途などに使用できます。
| 関数 | 構文 |
|---|---|
| SUMIF | SUMIF(range,criteria,[sum_range]) |
引数:
range(必須):指定した条件に一致する値を確認する対象となる子テーブルフィールドを指定します。
criteria(必須):range 内のどのセルを合計対象とするかを定義する条件です。数値、式、他のフィールドへの参照、または文字列を指定できます。詳細は以下の表をご参照ください。
| 用途 | 数式入力例 |
|---|---|
| 数値を指定 | "8" |
| 数値の比較 | "> 8"、"< 8"、"!= 8" |
| 文字列を指定 | "apple" |
| 文字列の不一致判定 | "!='apple'"(外側と内側で異なる引用符を使用してください。例:外側はダブルクォーテーション、内側はシングルクォーテーション) |
| 子テーブルフィールドを参照 | A4 (ダブルクォーテーションや「=」は不要です。フィールド名のみを記述してください) |
| 子テーブルフィールドとの比較 | "> A4"、"< A4"、"!=A4" |
sum_range(任意):range 引数で指定したフィールド以外の子テーブルフィールドの値を合計したい場合に指定します。
sum_range を省略した場合は、range 引数で指定したフィールド(条件を適用する同じフィールド)の値のみが合計されます。
注意:
SUMIF は 1 つの子テーブルのみを参照でき、独立フィールドに設定する必要があります。 また、指定できる条件は 1 つのみのため、複数条件を適用したい場合は SUMIFS を使用してください。
例:
フィールド A9 に SUMIF(A4, 'りんご', C4) という計算式を入力すると、子テーブルの列 A4(商品名)が りんご の行に対応する、列 C4 の値の合計が返されます。


SUMIFS は、複数の条件を満たす子テーブルの行に格納された値を合計するための関数です。たとえば、レシート内で「特定の商品」かつ「特定の店舗」の条件を満たす明細のみの金額を合計したい場合などに使用できます。
| 関数 | 構文 |
|---|---|
| SUMIFS | SUMIFS(sum_range,criteria_range1,criteria1,criteria_range2, criteria2,...) |
引数:
sum_range(必須):条件に一致した行について合計する対象となる 子テーブル フィールドを指定します。
criteria_range1(必須):criteria_range1 と criteria1 は検索条件のペアです。指定した範囲から条件に一致する行を検索し、一致した行に対応する sum_range の値が合計されます。
criteria1(必須):criteria_range1 に適用する条件です。数値、式、他フィールドへの参照、または文字列を指定できます。指定方法の例は下の表を参照してください。
| 用途 | 数式入力例 |
|---|---|
| 数値を指定 | "8" |
| 数値の比較 | "> 8"、"< 8"、"!= 8" |
| 文字列を指定 | "apple" |
| 文字列の不一致判定 | "!='apple'"(外側と内側で異なる引用符を使用してください。例:外側はダブルクォーテーション、内側はシングルクォーテーション) |
| 子テーブルフィールドを参照 | A4 (ダブルクォーテーションや「=」は不要です。フィールド名のみを記述してください) |
| 子テーブルフィールドとの比較 | "> A4"、"< A4"、"!=A4" |
criteria_range2, criteria2, ...(任意):追加で指定する条件範囲と、それに対応する条件です。
同一フィールドに複数条件を適用したい場合(例:A1 フィールドの合計が A または B に一致する場合)、SUMIFS() ではなく、複数の SUMIF() を使用する必要があります。
注意:SUMIFS は 1 つの子テーブルのみ参照可能で、独立フィールドに設定する必要があります。
例:
フィールド A18 に次の式を設定した場合:
SUMIFS(C11, B11, " > A16", B11, " < A17")
この式は、注文日(B11)が A16 より後かつ A17 より前の行に該当する、子テーブル列 C11 の値の合計を返します。


1 つ以上の条件に基づいて、指定した範囲内の最大値を返します。主に、最高価格・最大金額・最新日付などを取得する用途で使用されます。
| 関数 | 構文 |
|---|---|
| MAXIFS | MAXIFS(max_range, criteria_range1, criteria1, [criteria_range2, criteria2], ...) |
引数:
max_range(必須):最大値を取得する対象となる子テーブルのフィールド範囲。
criteria_range1(必須):条件判定に使用する最初の範囲。
criteria1(必須):criteria_range1 に適用する条件。数値・文字列・数式を指定できます。
[criteria_range2, criteria2](任意):追加の「範囲-条件」ペア。すべての条件を満たすレコードのみが計算対象になります。
例 1(単一条件): 特定商品の最高単価を取得する場合。
「見積レコード」シートで、
MAXIFS("単価", "商品", "ノートブック")を入力すると、「ノートブック」の最高単価が返されます。


例 2(複数条件): カテゴリと仕入先を指定して最高単価を取得する場合。カテゴリが「文房具」、かつ仕入先が「仕入先 A」のレコードから最高単価を取得するには、次の式を入力します。
MAXIFS("単価", "カテゴリー", "文房具", "仕入先", "A")
この式により、両方の条件を満たすレコードの中から最大値が返されます。


1 つ以上の条件に基づいて、指定した範囲内の最小値を返します。主に、最安値、最小数量、または最も早い日付を取得する際に使用されます。
| 関数 | 構文 |
|---|---|
| MINIFS | MINIFS(min_range, criteria_range1, criteria1, [criteria_range2, criteria2], ...) |
引数:
min_range(必須):最小値を検索する対象となる子テーブルのフィールド範囲。
criteria_range1(必須):条件に一致するデータを絞り込むための最初の範囲。
criteria1(必須):criteria_range1 に適用する条件。数値、文字列、または数式を指定できます。
[criteria_range2, criteria2](任意):追加の「範囲 × 条件」の組み合わせ。すべての条件を満たすレコードのみが計算対象になります。
例 1(単一条件): 特定商品の最安単価を取得する
「見積レコード」シートで、次の数式を入力します:
MINIFS("単価", "商品", "ノートブック")
これにより、「ノートブック」の最も低い単価が返されます。


例 2(複数条件): カテゴリと仕入先ごとの最安単価を取得する
カテゴリが「文房具」、かつ仕入先が「仕入先 A」であるレコードの最安単価を取得するには、次の数式を入力します:
MINIFS("単価", "カテゴリー", "文房具", "仕入先", "A")
条件をすべて満たすレコードの中から、最小値が返されます。


複数の条件を満たす必要がある場合、条件付き数式はネスト(入れ子)して使用できます。
例 1:
IF(A1==1,'不良',IF(A1==2,'良好',IF(A1==3,'優良','該当なし')))
上記の数式の意味は次のとおりです。
A1 が 1 の場合、結果は「不良」
A1 が 2 の場合、結果は「良好」
A1 が 3 の場合、結果は「優良」
それ以外の場合、結果は「該当なし」
例 2:
IF( AND(A1.RAW=='YES',A2.RAW=='山本'), C3*C7, IF( AND(A1.RAW=='YES',A2.RAW=='田中'), C3*C8, IF( AND(A1.RAW=='YES',A2.RAW=='高市'), C3*C9, C3*C10 ) ) )
上記の数式の意味は次のとおりです。
A1 の値が「YES」かつ A2 の値が「山本」の場合、結果は C3*C7
A1 の値が「YES」かつ A2 の値が「田中」の場合、結果は C3*C8
A1 の値が「YES」かつ A2 の値が「高市」の場合、結果は C3*C9
これらの条件に当てはまらない場合、結果は C3*C10
ネストされた条件付き数式に加えて、IFS() を使用すると、1 つ以上の条件が満たされているかを順に判定し、最初に TRUE となった条件に対応する値を返すことができます。
| 関数 | 構文 |
|---|---|
| IFS() | IFS(value=condition1,value_if_true1,value=condition2,value_if_true2,
...,true,default value) |
引数:
value=condition1(必須): 最初の条件。TRUE または FALSE に評価されます。
value_if_true1(必須): value=condition1 が TRUE の場合に返される結果。
value=condition2(必須): 2 番目の条件。TRUE または FALSE に評価されます。
value_if_true2(必須): value=condition2 が TRUE の場合に返される結果。
※ 少なくとも 2 組の条件を設定する必要があります。必要に応じてさらに追加できます。
true(任意): 他の条件がすべて満たされなかった場合のデフォルト条件として使用する場合は「true」を入力します。
default value(任意): いずれの条件にも一致しなかった場合に返される結果。
例:
IFS(A1=1,"不良",A1=2,"良好",A1=3,"優良",true,"該当なし")
上記の数式の意味は次のとおりです。
A1 が 1 の場合、結果は「不良」。
A1 が 2 の場合、結果は「良好」。
A1 が 3 の場合、結果は「優良」。
それ以外の場合、結果は「該当なし」。
指定した範囲または条件に基づいて、対応する結果を返します。
| 関数 | 構文 |
|---|---|
| LOOKUP | LOOKUP(value,lookup_list,[result_list]) |
value(必須): 検索対象となるフィールドの値。システムは lookup_list 内で完全一致、または最も近い値を検索します。
[lookup_list](必須): [0, 100, 500] のような配列。LOOKUP はこの配列内で指定した value を検索します。
result_list(任意): 一致した場合に返す結果を定義します。lookup_list と同じ要素数である必要があります(例:["Small","Medium","Large"])。省略した場合は lookup_list の値を返し、完全一致がない場合は指定値以下で最大の値に対応する結果を返します。すべての項目より小さい場合は空白を返します。
例 1: LOOKUP(A1,[0,45,65],['Small','Medium','Large'])
A1 が 0〜44 の場合は「Small」、45〜64 の場合は「Medium」、65 以上の場合は「Large」を返します。
例 2(複数フィールド参照): LOOKUP(A1,[0,45,65],[A3+A4,B5,B6])
A1 が 0〜44 の場合は A3+A4、45〜64 の場合は B5、65 以上の場合は B6 を返します。
すべての条件が TRUE と評価された場合は TRUE を返し、1つでも FALSE と評価された条件がある場合は FALSE を返します。
| 関数 | 構文 |
|---|---|
| AND | AND(logical1, [logical2], ...) |
引数:
logical1(必須):最初に評価される条件。結果は TRUE または FALSE になります。
logical2(任意):TRUE または FALSE の結果に影響する追加の条件。
いずれかの条件が TRUE の場合に TRUE を返し、すべての条件が FALSE の場合に FALSE を返します。
| 関数 | 構文 |
|---|---|
| OR | OR(logical1, [logical2], ...) |
引数:
logical1(必須):TRUE または FALSE として評価される最初の条件。
logical2(任意):追加の条件。いずれかが TRUE と評価された場合、結果は TRUE になります。
条件が FALSE の場合は TRUE を返し、条件が TRUE の場合は FALSE を返します。
| 関数 | 構文 |
|---|---|
| NOT | NOT(logical) |
例:
NOT(A2>10)
参照フィールド A2 の値が 10 以下の場合、システムは「true」を返します。10 を超える場合は「false」を返します。
UPDATEIF は、条件が FALSE の場合にフィールドの元の値を保持するために使用します。
UPDATEIF 関数を使用しているフィールドの値は、判定条件が TRUE の場合にのみ変更されます。
| 関数 | 構文 |
|---|---|
| UPDATEIF | UPDATEIF(condition,value_if_true) |
引数:
condition(必須):フィールドを更新するかどうかを判定する条件です。条件が満たされた場合にフィールドが更新され、満たされない場合は元の値が保持されます。
value_if_true(必須):条件が満たされたときに適用される値です。数値、テキスト、または他のフィールド参照を指定できます。
例:
基本例:UPDATEIF(A2==10,10)
参照フィールド A2 の値が 10 の場合、このフィールドの値は 10 になります。それ以外の場合は、レコードの前回保存時の値がそのまま保持されます。
実用例:UPDATEIF(A2=='自宅住所と同じ',A1)
フィールド A2 の値が「自宅住所と同じ」の場合、「配送先住所」フィールドの値は A1(自宅住所)になります。それ以外の場合、値は変更されず空のまま保持されます。