子テーブルのフィールドに関連するデータを取得するための数式です。例えば、子テーブル内の特定の行を返したり、重複を除いた行数や空でない行数を取得したりすることができます。
以下はサポートされている計算式の一覧です。なお、以下の計算式は大文字・小文字を区別します。
| 関数 | 概要 |
|---|---|
| FIRST(value) | 子テーブル内の指定した列における最初のデータを返します。詳細は こちら。 |
| FIRSTA(value) | 子テーブル内の指定した列において、空でない最初のデータを返します。詳細は こちら。 |
| LAST(value) | 子テーブル内の指定した列における最後のデータを返します。詳細は こちら。 |
| LASTA(value) | 子テーブル内の指定した列において、空でない最後のデータを返します。詳細は こちら。 |
| SUBTABLEROW(value,nth_row) | 子テーブル内の指定した行(nth_row)にある列のデータを返します。この関数は独立フィールドでのみ設定できます。詳細は こちら。 |
| COUNTA(value) | 指定したフィールドが空でない子テーブルの行数をカウントします。同じ行内の他のフィールドが空であっても、指定フィールドに値があればカウントされます。行全体が入力されている必要はありません。詳細は こちら。 |
| RUNNINGBALANCE(value, [allow_backend_formula_recalculation=false]) | 子テーブル内の指定したフィールドについて、当該行およびそれ以前の行の値を合計した累計値を返します。true に設定すると、この数式に対してバックエンドでの再計算が許可されます。本関数を使用するには、子テーブルのレコードが順番に作成されている必要があります。詳細は こちら。 |
| LARGE(arg, nth, ["arg2"]) | 子テーブルのフィールドを参照し、ある列の順位(nth)を基準に、同じ行にある別の列の値を返します。詳細は こちら。 |
| UNIQUE() | 参照した子テーブルフィールド内の重複しない値を一覧表示します。詳細は こちら。 |
| UNIQUE().length | 参照した子テーブルフィールド内の重複しない値の件数を計算します。詳細は こちら。 |
| VLOOKUP() | 指定した条件を満たす子テーブル内の値を返します。詳細は こちら。 |
フィールドヘッダーに数式を設定すると、特に子テーブルでは複雑な数式を使わずに計算できるため、計算処理を簡略化できます。
以下は「受注書」シートにおける計算例です。
子テーブルには、各商品の単価(C4)と数量(D4)が一覧表示されています。
これらの値を掛け合わせることで、各商品の合計金額(E4 = C4 * D4)を算出できます。
その後、合計フィールド(A8)では、子テーブル内の合計金額(E4)を参照して小計を計算します。

数式は子テーブル自体に対しても使用できます。
例えば、子テーブル内に何行あるかをカウントしたい場合、シートに別のフィールドを作成し、COUNT() 数式を使用するだけで対応できます。

子テーブル数式の詳細および使用例については、次のセクションを参照してください。
また、子テーブルにおける条件付き数式の使い方については、こちらのセクションをご覧ください。
以下の数式を使用すると、子テーブル内の特定の行から指定したフィールドの値を返すことができます。下の表を参照してください。
| 関数 | 用途 | 例 |
|---|---|---|
| FIRST(value) | 最初のレコードを返します。先頭または最も古いデータを取得する際に使用します。独立フィールドおよび子テーブルフィールドの両方で使用可能です。 | FIRST(A11) |
| FIRSTA(value) | 空の行を無視し、空でない最初のレコードを返します。独立フィールドおよび子テーブルフィールドの両方で使用可能です。 | FIRSTA(A11) |
| LAST(value) | 最後のレコードを返します。末尾または最新のデータを取得する際に使用します。独立フィールドおよび子テーブルフィールドの両方で使用可能です。 | LAST(A11) |
| LASTA(value) | 空の行を無視し、空でない最後のレコードを返します。独立フィールドおよび子テーブルフィールドの両方で使用可能です。 | LASTA(A11) |
| SUBTABLEROW(value, nth_row) | 指定した行のデータを返します。中間行や特定の行を取得する際に使用します。独立フィールドでのみ使用可能です。 | SUBTABLEROW(A11, 3) |

指定したフィールドが空でない子テーブルの行数をカウントします。内容がテキスト、数値、数式の結果であるかに関わらずカウントされ、空のフィールドは除外されます。統計処理、データ検証、レポート分析などでよく使用されます。
注意: 指定したフィールドに値が入っていれば、同じ行内の他のフィールドが空であってもカウントされます。行全体が入力されている必要はありません。
例:ファイルアップロードフィールドを含む子テーブルでは、各行に添付ファイルがある場合もあれば、未アップロードで空の行もあります。
ファイル数フィールドに COUNTA(ファイルアップロード) を設定すると、ファイルがアップロードされている子テーブルのレコード数を簡単に算出できます。


子テーブル内の指定した列について、現在の行とそれ以前の行の値を合計した累計値を返します。金額、数量、その他の累計が必要なフィールドでよく使用されます。
| 関数 | 構文 |
|---|---|
| RUNNINGBALANCE | RUNNINGBALANCE(value, [allow_backend_formula_recalculation=false]) |
引数:
value(必須):累計対象となるフィールド。
allow_backend_formula_recalculation(任意):デフォルトは false です。true に設定すると、バックエンドでの数式再計算が許可されます。
注意:子テーブルのレコードは正しい順序で作成されている必要があります。
例: 累計値の計算
子テーブル内の「累計金額」フィールドに、次の数式を設定します:
RUNNINGBALANCE("日次取引金額", true)
この数式は、日ごとの取引金額を順番に加算し、行ごとに累計金額を表示します。また、バックエンドでの自動再計算も可能になります。

指定した子テーブルフィールドの順位(n 番目)に基づいて値を返す、または同じ行にある別フィールドの値を返します。統計分析、ランキング、パフォーマンス評価などでよく使用されます。重複する値がある場合でも同順位として扱われず、順番に順位付けされます。
| 関数 | 構文 |
|---|---|
| LARGE | LARGE(arg, nth, ["arg2"]) |
引数:
arg(必須):対象となる数値フィールド。
nth(必須):取得したい順位(例:最大値は 1、2 番目に大きい値は 2)。
arg2(任意):条件を満たした場合に、同じ行から返したいフィールド。
例: 上位成績者と四半期売上の取得
各営業担当者の四半期実績を「担当者名」「四半期売上」フィールドで記録している子テーブルがあるとします。
四半期の最高売上額を取得するには、次の数式を使用します:
LARGE("四半期売上", 1)
この数式は、その四半期で最も高い売上金額を返します。

最も成績の良い営業担当者の名前を取得するには、次の数式を使用します:
LARGE("四半期売上", 1, "担当者")
この場合、四半期売上が最も高い営業担当者の名前が返されます。
2 番目に成績の良い担当者を取得したい場合は、LARGE("四半期売上", 2, "担当者") を使用します。

子テーブル内の最小値を取得したい場合は、COUNT() 関数と組み合わせて使用します。
例:LARGE("四半期売上", COUNT("四半期売上"), "担当者")
この数式は、「四半期売上」フィールド内で最も小さい値と、それに対応する「担当者」を返します。

UNIQUE() および UNIQUE().length を使用すると、子テーブル内の重複しない値を取得したり、その件数を計算したりできます。
UNIQUE():参照した子テーブルフィールド内の重複しない値を一覧表示します。
数式内で区切り文字を指定しない場合、子テーブルの値はデフォルトで「,」(カンマ)区切りとなり、以下のように表示されます。

区切り文字を変更したい場合は、数式を UNIQUE(field,"区切り文字") の形式で指定します。
例えば、UNIQUE(A1,"/")、UNIQUE(A1," ")、UNIQUE(A1,", ") のように設定すると、結果はそれぞれ
「佐藤 美咲/鈴木 由奈/田中 健」、「佐藤 美咲 鈴木 由奈 田中 健」、「佐藤 美咲, 鈴木 由奈, 田中 健」となります。

UNIQUE().length:参照した子テーブルフィールド内の重複しない値の件数を計算します。
例:

VLOOKUP 関数は、指定した条件が TRUE と評価された場合に、子テーブルの行にあるフィールド値を返します。
| 関数 | 構文 |
|---|---|
| VLOOKUP | VLOOKUP(value, queryField, returnField, [approximateMatch=true], [findMultiple=false]) |
引数:
value(必須):検索したい値。数値、式、他フィールドの参照、またはテキスト文字列を指定できます。
queryField(必須):検索対象となる値が含まれている子テーブルのフィールド。
returnField(必須):結果として返したい値が含まれている子テーブルのフィールド。
[approximateMatch=true](任意):近似一致か完全一致かを指定します。デフォルトは true(近似一致)です。完全一致で検索したい場合は false を指定してください。
[findMultiple=false](任意):returnField から複数の値を返すかどうかを指定します。デフォルトは false です。条件に一致するエントリーが複数存在する可能性がある場合は true を指定してください。
例:
以下の子テーブルから、特定のクラスの担当教師を検索したい場合を考えます。

まず、検索したいクラス名を入力するための 自由入力フィールド を作成します。
次に、別のフリーテキストフィールドを作成し、次の数式を設定します:
VLOOKUP(A9, A4, B4, false, false) または VLOOKUP(A9, A4, B4)
これにより、入力されたクラス名に対応する教師名が返されます。

条件に一致する複数の値を返し、かつ近似一致で検索したい場合は、 VLOOKUP(A9, A4, B4, true, true) を使用してください。