# GetStateCounts - 圖表函數

GetStateCounts() 圖表函數用於計算與指定選取狀態相符的唯一值的總數。

使用 GetStateCounts()，您可以將下列函數的計算合併到單一函數叫用：GetSelectedCount()、GetNotSelectedCount()、GetAlternativeCount()、GetPossibleCount() 和 GetExcludedCount()。所選排除值的計數也可以加入計算。您可以指定是否從傳回的總計中加上或減去每個函數計算。

語法：

GetStateCounts (field\_name, state\_name [, state\_type1,...state\_typeN])

傳回的資料類型： 整數

引數

| 引數 | 描述 |
| --- | --- |
| field\_name | 您正在計算選取狀態的欄位。不存在的欄位名稱會導致 Null 結果。 |
| state\_name | 替代狀態的名稱。如果引數為空 (`''`) 或 Null，則使用繼承的替代狀態。使用 `$` 明確使用預設狀態。不符合現有狀態的命名 (非空) 狀態名稱會導致 Null 結果。 |
| state\_type | 欄位值的一種或多種狀態類型的清單。這些狀態類型將彙總為一個計數。使用金鑰指定狀態類型。用單引號輸入每個金鑰。<br><br>若省略此引數，函數將傳回字串，其中包含該欄位的所有可用狀態計數，其順序與列舉相同。<br><br>如需可以使用的狀態清單，請參閱下表。 |

會使用特定金鑰參考狀態類型。您可以使用金鑰的數字或文字版本。在相同運算式中組合多個金鑰以進一步自訂結果。您可以從總數減去狀態計數，而不是相加。若要這麼做，請使用文字金鑰並在狀態類型前面加上減號 (`-`)。

狀態類型以及減號 (如果適用) 需要用一組單引號括起。

每個欄位狀態類型的金鑰

| 欄位狀態類型 | 描述 | 數字金鑰 | 文字金鑰 |
| --- | --- | --- | --- |
| 已選取 | 在計算中納入所選的值。關於等效函數，請參閱 [GetSelectedCount - 圖表函數](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/FieldFunctions/getselectedcount.htm)。 | 1 | S |
| 選用 | 在計算中包含選用 (未選取，但可以選取) 值。關於等效函數，請參閱 [GetPossibleCount - 圖表函數](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/FieldFunctions/getpossiblecount.htm)。 | 2 | O |
| 已取消選取 | 在計算中納入未選取的值。此狀態類型僅在欄位處於 AND (和) 模式時可用。 | 3 | D |
| 替代選項 | 在計算中納入替代值。關於等效函數，請參閱 [GetAlternativeCount - 圖表函數](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/FieldFunctions/getalternativecount.htm)。 | 4 | A |
| 已排除 | 在計算中納入已排除 (未選取) 的值。關於等效函數，請參閱 [GetExcludedCount - 圖表函數](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/FieldFunctions/getexcludedcount.htm)。 | 5 | X |
| 已選取排除值 | 在計算中納入所選的排除值。 | 6 | XS |

## 何時使用 GetStateCounts

使用 GetStateCounts()，您可以計算自訂選取狀態。該函數允許您將多個函數叫用合併為單一函數叫用，進而簡化撰寫運算式的流程。

例如，您可能需要計算欄位的排除值、替代值和所選排除值的總數。您可以使用 GetStateCounts() 計算此總數。

範例：圖表運算式

| 範例 | 結果 |
| --- | --- |
| `=GetStateCounts( ProductName, Null(), 'S' )` | 傳回處於繼承替代狀態的 `ProductName` 的所選計數。 |
| `=GetStateCounts( ProductName, '', 'X', 'A', 'XS' )` | 傳回 `ProductName` 的排除值、所選排除值和替代值的總數。使用繼承的替代狀態。 |
| `=GetStateCounts( ProductName, '', 'S', 'XS' )` | 傳回處於繼承狀態的 `ProductName` 的使用者選項總數。 |
| 假設 ProductName 欄位處於 and (和) 模式。<br><br><br>`=GetStateCounts(ProductName, '', 'D', '-O')` | 對於 `ProductName`，傳回未選取值的數量，減去可能值的數量。使用繼承的替代狀態。 |
| `=GetStateCounts(ProductName, '', 'X', , 'A', 'XS')` | 傳回 `ProductName` 的排除值、所選排除值和替代值的總數。使用繼承的替代狀態。 |
| `=GetStateCounts(ProductName, '$', 'O')` | 傳回處於預設替代狀態的 `ProductName` 的可能計數。 |
| `=GetStateCounts(ProductName, 'StateA', 'S')` | 傳回處於名為 `StateA` 之替代狀態的 `ProductName` 的所選計數。 |

## 範例 1 – 計算使用者選項總數 (包括所選的排除值)

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/FieldFunctions/getstatecounts.htm)

#### 圖表運算式

概述

GetSelectedCount() 函數傳回所選值的總數，不包括所選排除值的總數。使用 GetExcludedCount()，您可以在圖表的計算中納入所選排除值的計數。

開啟 資料載入編輯器 並將下列載入指令碼新增至新區段。

載入指令碼

```
Names:
LOAD * inline [
First name|Last name|Initials|Has cellphone
John|Anderson|JA|Yes
Sue|Brown|SB|Yes
Mark|Carr|MC|No
Peter|Devonshire|PD|No
Jane|Elliot|JE|Yes
Peter|Franc|PF|Yes ] (delimiter is '|');
```

結果

請執行下列動作：

1. 載入資料並開啟工作表。

2. 建立兩個篩選窗格。

3. 在第一個篩選窗格中新增 First name 作為維度。在第二個篩選窗格中新增 Last name 作為維度。

4. 接下來，使用此量值建立 KPI：

   `=GetStateCounts([First Name],'', 'S','XS')`

5. 在 First name 篩選窗格中，選取值 Mark 和 Peter。在 Last name 篩選窗格中，選取值 Carr。

6. 可以觀察到 KPI 顯示值 2。這反映計入了您選取的所有值，包括所選的排除值 Peter。

## 範例 2 – 合併排除、所選排除和替代計數

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/FieldFunctions/getstatecounts.htm)

#### 圖表運算式

概述

GetExcludedCount() 函數傳回未選取和排除的唯一值的總數。如果您想在視覺化中納入所選排除計數和替代計數，可以使用 GetStateCounts() 函數，如下所示。

開啟 資料載入編輯器 並將下列載入指令碼新增至新區段。

載入指令碼

```
Names:
LOAD * inline [
First name|Last name|Initials|Has cellphone
John|Anderson|JA|Yes
Sue|Brown|SB|Yes
Mark|Carr|MC|No
Peter|Devonshire|PD|No
Jane|Elliot|JE|Yes
Peter|Franc|PF|Yes ] (delimiter is '|');
```

結果

請執行下列動作：

1. 載入資料並開啟工作表。

2. 建立兩個篩選窗格。

3. 在第一個篩選窗格中新增 First name 作為維度。在第二個篩選窗格中新增 Last name 作為維度。

4. 接下來，使用此量值建立 KPI：

   `=GetStateCounts([First name], '', 'X', 'A', 'XS')`

5. 在 First name 篩選窗格中，選取值 John 和 Peter。在 Last name 篩選窗格中，選取值 Franc。

6. 可以觀察到 KPI 顯示值 4。這反映除了排除值的計數，在計數中也納入了所選的排除值 John。

7. 編輯 KPI 並將現有量值替換為以下內容：

   `=GetStateCounts([Last name], '', 'X', 'A', 'XS')`

8. 保留現有選項，在 Last name 篩選窗格中選取值 Anderson。

9. 可以觀察到 KPI 仍顯示值 4。這反映除了排除值的計數，在計數中也納入了替代值 Devonshire。