# 集計関数

集計関数は、列の参照（列参照変数）を受け取り、集計値を返す関数です。

{% hint style="info" %}
集計関数はMashmatrix Sheetの数式で拡張追加されている関数です。
{% endhint %}

## 集計関数一覧 <a href="#functions" id="functions"></a>

### SUM(column) <a href="#sum" id="sum"></a>

指定された列に含まれる値の合計を返します。

| 引数名    | 説明            |
| ------ | ------------- |
| column | 合計値を取得する列への参照 |

#### 数式の例

```
/* 列の参照名が"Amount"である列の合計値を返す */
SUM([#Amount])

/* シートIDが"s1"のシートの中の"Amount"列の合計値を返す */
SUM([s1].[#Amount])
```

### SUMIFS(column, match\_column1, match\_condition1, ...) <a href="#sumifs" id="sumifs"></a>

指定された条件に一致するレコードについて、第1引数に指定された列に含まれる値の合計を返します。条件列と条件値のペアは複数指定可能です。

| 引数名               | 説明                                                  |
| ----------------- | --------------------------------------------------- |
| column            | 合計値を取得する列への参照                                       |
| match\_column1    | 条件比較を行う列への参照                                        |
| match\_condition1 | 条件比較する値。条件比較演算子を利用可能。                               |
| ...               | 以下 *match\_column* と *match\_condition* の繰り返し（省略可能） |

#### 数式の例

```
/* "Type"列の値が"New Business"であるレコードの"Amount"列の合計値を返す */
SUMIFS([#Amount], [#Type], "New Business")

/* 列の参照名が"Amount"である列の値のうち0より大きいものの合計値を返す */
SUMIFS([#Amount], [#Amount], ">0")
```

### COUNT(column) <a href="#count" id="count"></a>

指定された列に含まれる値の件数を返します。集計対象に空欄は含みません。

| 引数名    | 説明           |
| ------ | ------------ |
| column | 件数を取得する列への参照 |

#### 数式の例

```
/* 列の参照名が"AccountId"である列に含まれる値のうち、空白でないものの件数を返す */
COUNT([#AccountId])

/* シートIDが"s1"のシートの中の"Name"列に含まれる値のうち、空白でないものの件数を返す */
COUNT([s1].[#Name])
```

### COUNTIFS(match\_column1, match\_condition1, ...) <a href="#countifs" id="countifs"></a>

指定された条件に一致するレコードの件数を返します。`COUNT()`とは異なり、集計対象には空欄も含まれます。

| 引数名               | 説明                                                  |
| ----------------- | --------------------------------------------------- |
| match\_column1    | 条件比較する列への参照                                         |
| match\_condition1 | 条件比較する値。条件比較演算子を利用可能。                               |
| ...               | 以下 *match\_column* と *match\_condition* の繰り返し（省略可能） |

#### 数式の例

```
/* "Type"列に含まれる値が現在のレコードの値と同じレコードの件数を返す */
COUNTIFS([#Type], [@Type])

/* シート"s1"の中で"Amount"列の値が0でありかつ"IsWon"列の値がTRUEであるレコードの件数を返す */
COUNTIFS([s1].[#Amount], 0, [s1].[#IsWon], TRUE)
```

### COUNTDISTINCT(column) <a href="#countdistinct" id="countdistinct"></a>

指定された列に含まれる値のうち重複を除いた件数を返します。集計対象に空欄は含みません。

| 引数名    | 説明           |
| ------ | ------------ |
| column | 件数を取得する列への参照 |

#### 数式の例

```
/* 列の参照名が"Status"である列に含まれる値のうち重複を除いた件数を返す */
COUNTDISTINCT([#Status])

/* シートIDが"s1"のシートの中の"Email"列に含まれる値のうち重複を除いた件数を返す */
COUNTDISTINCT([s1].[#Email])
```

### **COUNTDISTINCTIFS(column, match\_column1, match\_condition1, ...)** <a href="#countdistinctifs" id="countdistinctifs"></a>

指定された条件に一致するレコードについて、第1引数に指定された列に含まれる値のうち重複を除いた件数を返します。`COUNTDISTINCT()`とは異なり、集計対象には空欄も含まれます。

| 引数名               | 説明                                                  |
| ----------------- | --------------------------------------------------- |
| column            | 件数を取得する列への参照                                        |
| match\_column1    | 条件比較する列への参照                                         |
| match\_condition1 | 条件比較する値。条件比較演算子を利用可能。                               |
| ...               | 以下 *match\_column* と *match\_condition* の繰り返し（省略可能） |

#### 数式の例

```
/* "Email"列の値が"@example.com"で終わるものうち重複を除いた件数を返す */
COUNTDISTINCTIFS([#Email], [#Email], "=*@example.com")

/* シート"s1"の中で、"Email"列が空欄であるレコードのうち"Name"列の値の重複を除いた件数を返す */
COUNTDISTINCTIFS([s1].[#Name], [s1].[#Email], NULL)
```

### MAXVAL(column) <a href="#maxval" id="maxval"></a>

指定された列に含まれる値の最大値を返します。

| 引数名    | 説明            |
| ------ | ------------- |
| column | 最大値を取得する列への参照 |

#### 数式の例

```
/* 列の参照名が"NumOfEmployees"である列に含まれる値のうちの最大値を返す */
MAXVAL([#NumOfEmployees])

/* シートIDが"s1"のシートの中の"CloseDate"列に含まれる値のうちの最大値を返す */
MAXVAL([s1].[#CloseDate])
```

### **MAXVALIFS(column, match\_column1, match\_condition1, ...)** <a href="#maxvalifs" id="maxvalifs"></a>

指定された条件に一致するレコードについて、第1引数に指定された列に含まれる値の最大値を返します。

| 引数名               | 説明                                                  |
| ----------------- | --------------------------------------------------- |
| column            | 最大値を取得する列への参照                                       |
| match\_column1    | 条件比較する列への参照                                         |
| match\_condition1 | 条件比較する値。条件比較演算子を利用可能。                               |
| ...               | 以下 *match\_column* と *match\_condition* の繰り返し（省略可能） |

#### 数式の例

```
/* "AccountId"列の値が現在のレコードの値と同じレコードのうち、
   "Amount"列の値の最大値を返す */
MAXVALIFS([#Amount], [#AccountId], [@AccountId])

/* シート"s1"の中で、
   "CloseDate"列が現在のレコードの"LastActivityDate"列より後の日付のレコードのうち、
   "Name"列の値の最大値を返す */
MAXVALIFS([s1].[#Name], [s1].[#CloseDate], ">" & TEXT([@LastActivityDate]))
```

### MINVAL(column) <a href="#minval" id="minval"></a>

指定された列に含まれる値の最小値を返します。

| 引数名    | 説明            |
| ------ | ------------- |
| column | 最小値を取得する列への参照 |

#### 数式の例

```
/* 列の参照名が"NumOfEmployees"である列に含まれる値のうちの最小値を返す */
MINVAL([#NumOfEmployees])

/* シートIDが"s1"のシートの中の"CloseDate"列に含まれる値のうちの最小値を返す */
MINVAL([s1].[#CloseDate])
```

### **MINVALIFS(column, match\_column1, match\_condition1, ...)** <a href="#minvalifs" id="minvalifs"></a>

指定された条件に一致するレコードについて、第1引数に指定された列に含まれる値の最小値を返します。

| 引数名               | 説明                                                  |
| ----------------- | --------------------------------------------------- |
| column            | 最小値を取得する列への参照                                       |
| match\_column1    | 条件比較する列への参照                                         |
| match\_condition1 | 条件比較する値。条件比較演算子を利用可能。                               |
| ...               | 以下 *match\_column* と *match\_condition* の繰り返し（省略可能） |

#### 数式の例

```
/* "Status"列の値が"New"のレコードのうち、"ActivityDate"列の値の最小値を返す */
MINVALIFS([#ActivityDate], [#Status], "New")

/* シート"s1"の中で、"CloseDate"列が空白レコードのうち、"Amount"列の値の最小値を返す */
MINVALIFS([s1].[#Amount], [s1].[#CloseDate], NULL)
```

### AVERAGE(column) <a href="#average" id="average"></a>

指定された列に含まれる値の平均値を返します。

| 引数名    | 説明            |
| ------ | ------------- |
| column | 平均値を取得する列への参照 |

#### 数式の例

```
/* 列の参照名が"NumOfEmployees"である列に含まれる値のうちの平均値を返す */
AVERAGE([#NumOfEmployees])

/* シートIDが"s1"のシートの中の"Amount"列に含まれる値のうちの平均値を返す */
AVERAGE([s1].[#Amount])
```

### **AVERAGEIFS(column, match\_column1, match\_condition1, ...)** <a href="#averageifs" id="averageifs"></a>

指定された条件に一致するレコードについて、第1引数に指定された列に含まれる値の平均値を返します。

| 引数名               | 説明                                                  |
| ----------------- | --------------------------------------------------- |
| column            | 平均値を取得する列への参照                                       |
| match\_column1    | 条件比較する列への参照                                         |
| match\_condition1 | 条件比較する値。条件比較演算子を利用可能。                               |
| ...               | 以下 *match\_column* と *match\_condition* の繰り返し（省略可能） |

#### 数式の例

```
/* "IsWon"列の値がTRUEのレコードのうち、"Quantity"列の値の平均値を返す */
AVERAGEIFS([#Quantity], [#IsWon], TRUE)

/* シート"s1"の中で、"CloseDate"列に値があるレコードのうち、"Amount"列の値の平均値を返す */
AVERAGEIFS([s1].[#Amount], [s1].[#CloseDate], "*")
```

## 条件値と条件比較演算子 <a href="#match_condition_operator" id="match_condition_operator"></a>

条件を指定できる集計関数では、条件を比較する列に併せて条件値を指定可能です。条件値として文字列・数値・真偽値・NULLなどが指定することが可能ですが、文字列の先頭に比較演算子を付与することも可能です。

集計関数の条件値で利用できる条件比較演算子には以下の種類があります。

* `=` （等価）。後続する文字列あるいはパターンに一致する。
* **`<>`** （不等価）。後続する文字列あるいはパターンに一致しない。
* **`<`** （より小さい）。後続する文字列で指定される値よりも小さい。値が数値の場合は数値で比較され、テキストの場合は辞書順で比較されます。
* **`<=`** （以下）。後続する文字列で指定される値以下である。値が数値の場合は数値で比較され、テキストの場合は辞書順で比較されます。
* **`>`** （より大きい）。後続する文字列で指定される値よりも大きい。値が数値の場合は数値で比較され、テキストの場合は辞書順で比較されます。
* **`>=`** （以上）。後続する文字列で指定される値以上である。値が数値の場合は数値で比較され、テキストの場合は辞書順で比較されます。

条件比較演算子が省略された場合は等価比較で条件値に渡された値と比較します。

## 条件値でのワイルドカードの利用 <a href="#match_condition_wildcard" id="match_condition_wildcard"></a>

条件比較が等価(=)あるいは不等価(<>)比較の場合、条件値の文字列にワイルドカードを用いてパターン一致が利用できます。ワイルドカードには以下の種類があります

* `*`（アスタリスク）。任意の複数文字（空文字も含む）を表します。
* `?`（クエスチョン）。任意の1文字を表します。

ワイルドカードで指定されている文字を比較に用いたい場合は、エスケープ文字である`~`を用いてエスケープしてください。例えば以下の例では、Column01列の値のうち `*` という文字列に一致するレコードを集計しています。

```
COUNTIFS([#Column01], "~*")
```

## 集計関数の制限 <a href="#aggregation_function_limitations" id="aggregation_function_limitations"></a>

* 集計関数の集計対象は、そのシート上に取得されたレコードのみが対象となります。Salesforceのオブジェクトに格納されているレコード全体ではありません。シートの設定から「最大取得レコード数」を変更することにより、集計するレコード数を増やすことが可能です。
* 集計関数の引数に渡す集計列および条件列には項目変数は指定できません。あるSalesforce項目の集計を行うには、一旦その項目を列としてシートに追加した後、その追加した列を集計関数に渡す必要があります。
* 集計関数の引数に渡す集計列および条件列は、同一のシートに属する列である必要があります。
