> For the complete documentation index, see [llms.txt](https://docs.mashmatrix.com/mashmatrix-sheet/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.mashmatrix.com/mashmatrix-sheet/ja/functions_about_displaying_data/formula.md).

# 数式

Mashmatrix Sheet では、数式を利用してシート内のセルの内容を計算して表示することができます。Mashmatrix Sheetの数式は、Salesforceの項目定義で用いられる数式と構文的な互換性があるため、一部のSalesforceの数式はそのままMashmatrix Sheet上でも動作します。

## 数式エディタを用いた数式の記述 <a href="#formula-editor" id="formula-editor"></a>

数式は数式エディタを用いて記述します。数式エディタは新規に数式列を作成するとき、あるいは列の数式設定から数式の編集をするときなどに利用できます。

![](/files/aQ21DW9DF1zfZOAkBMDL)

* **\[A] 変数参照タブ** - 数式内で利用する項目や列、グローバル変数、関数などを参照します。変数を選択して「挿入」ボタンを押すことで変数が数式入力のカーソル位置に挿入されます。
* **\[B] 数式入力** - 数式をテキストで入力するエリアです。
* **\[C] 検証ボタン** - 数式入力に入力されているテキストを構文チェックを行い、数式として妥当か検証を行います。検証済みの数式にはチェックマークが表示されます。検証エラーがある場合、エラーメッセージが数式入力の下部に赤字で表示されます。
* **\[D] 空白項目の処理** - 数式内で参照する数値/通貨/パーセント型の変数の値が空であった場合、値を０として処理するか、そのまま空白として処理するかを選択します。

## 数式の構成要素 <a href="#formula-elements" id="formula-elements"></a>

### 項目変数 <a href="#field" id="field"></a>

数式の中では、数式が評価されるレコードの項目値を変数として参照できます。数式列に指定する数式の場合、項目を選ぶ基準となるオブジェクトは列を追加したシートにリンクされているオブジェクトになります。

![](/files/gLvQfUdPDkyXh2XU6uwv)

項目を数式内で参照して入力するには以下の手順で行います。

1. 数式エディタの変数参照タブから「項目」タブを選択します
2. 項目リストから参照する項目を選び、「挿入」ボタンを押します。

数式内で参照する項目は、必ずしもシート内に列として含まれている必要はありません。シート内に含まれていない項目も数式内では利用できます。

{% hint style="info" %}
項目変数は集計関数やVLOOKUP関数の列引数としては利用できません。これらの関数の列引数に利用する場合は、あらかじめ項目をシート内に列として追加した上で「列」タブから「すべての行」を選択して列変数を挿入します
{% endhint %}

### 列変数 <a href="#global-variable" id="global-variable"></a>

数式の中では、シート内に追加されている列を指定してその値を変数として参照できます。

![](/files/CAJEjwkkEdQBj0wblWSh)

列変数には以下の２種類があります

* **列値（現在の行）** - 現在数式が評価されているレコードにおける列の値を参照します
  * 数式のテキストでは `[@列の参照名]`の形式で記述されます。
* **列参照（すべての行）** - シートに含まれている列全体を参照します。集計関数など列参照を引数として受け取る特別な関数から利用することが可能です。
  * 数式のテキストでは `[#列の参照名]`の形式で記述されます。外部シートに含まれる列の場合は`[シートID].[#列の参照名]`の形式で記述されます。

列値変数（現在の行）では、数式が利用されるシート内の列のみを参照できます。一方、列参照変数（すべての行）は、数式が利用されるシート以外の他のシートの列も参照できます。

現在行のレコードの値を参照する列値変数（現在の行）を追加するには以下の手順で行います。

1. 数式エディタの変数参照タブから「列」タブを選択します。
2. 列のリストから参照する列を選びます。
3. 対象行の選択ラジオボタン **\[B]** から「現在の行」を選んだ状態で、「挿入」ボタンを押します

列全体を参照する列参照変数（すべての行）を追加するには以下の手順で行います。

1. 数式エディタの変数参照タブから「列」タブを選択します。
2. シート切り替えメニュー **\[A]** から対象の列を含むシートを選択します。
3. 列のリストから参照する列を選びます。
4. 対象行の選択ラジオボタン **\[B]** から「すべての行」が選ばれていることを確認し、「挿入」ボタンを押します。

### グローバル変数 <a href="#function" id="function"></a>

グローバル変数は、数式の評価されるオブジェクトやレコードに依存せず、常に参照アクセスが可能な情報を保持する変数です。

![](/files/Zfr0rqL1xW4IsYA4D19b)

グローバル変数を数式内で参照して入力するには以下の手順で行います。

1. 数式エディタの変数参照タブから「グローバル変数」タブを選択します
2. グローバル変数リストから参照する項目を選び、「挿入」ボタンを押します。

以下はMashmatrix Sheetの数式でサポートされているグローバル変数です。Salesforceの数式で利用できるグローバル変数のサブセットとなりますので、すべてのグローバル変数が利用できるわけではないことに注意してください。

#### ユーザ ($User) <a href="#user" id="user"></a>

* ユーザID (Id)
* ユーザ名 (Username)
* メール (Email)
* 名 (FirstName)
* 姓 (LastName)
* 氏名 (Name)
* 別名 (Alias)
* 会社名 (CompanyName)
* 部署 (Department)
* 役職 (Title)
* マネージャーID (ManagerId)
* プロファイルID (ProfileId)
* ロールID (UserRoleId)
* 通貨コード (DefaultCurrencyIsoCode)
* 言語 (LanguageLocaleKey)
* 地域 (LocaleSidKey)
* タイムゾーン (TimeZoneSidKey)

#### 組織 ($Organization) <a href="#organization" id="organization"></a>

* 組織ID (Id)
* 組織名 (Name)

### 関数 <a href="#function" id="function"></a>

関数を利用すると、数式内で変数値を変換し別の値として利用できます。

![](/files/iSMS4uMoBdYns7dSlI7E)

関数を数式内で参照して入力するには以下の手順で行います。

1. 数式エディタの変数参照タブから「関数」タブを選択します
2. 関数リストから参照する項目を選び、「挿入」ボタンを押します。

関数の詳細については「[関数](/mashmatrix-sheet/ja/functions_about_displaying_data/function.md)」を参照してください

## 数式の制約および注意事項 <a href="#formula-restrictions-and-considerations" id="formula-restrictions-and-considerations"></a>

* Salesforceの数式で対応しているすべての関数およびグローバル変数がサポートされているわけではないことに注意してください。詳細は上記のサポートリストをご確認ください。
* Salesforceの数式とは異なり、数式内の項目はSalesforceに定義されているAPI参照名と大文字小文字がすべて一致している必要があります。また関数名はすべて大文字である必要があります。
* Salesforceの数式とは異なり、数式内で参照している項目には直接の参照アクセス権が必要です。
* 数式の中で関連をたどったオブジェクトの項目を参照している場合（クロスオブジェクト数式）、該当のオブジェクトレコードに対する参照アクセス権が必要です。オブジェクトレコードへのアクセス権がない場合、レコードへの参照がnullであるのと同等の動作となります。
* 数式内で複数のオブジェクトに関連する関連項目（多態関連項目）をたどったオブジェクトの項目を参照することは現在サポートされていません。
