# 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/qlikview/September2025/Subsystems/Client/Content/QV_QlikView/ChartFunctions/FieldFunctions/getselectedcount.htm)。 | 1 | S |
| 選用 | 在計算中包含選用 (未選取，但可以選取) 值。關於等效函數，請參閱 [GetPossibleCount](https://help.qlik.com/zh-TW/qlikview/September2025/Subsystems/Client/Content/QV_QlikView/ChartFunctions/FieldFunctions/getpossiblecount.htm)。 | 2 | O |
| 已取消選取 | 在計算中納入未選取的值。此狀態類型僅在欄位處於 and (和) 模式時可用。<br><br>假設 GetNotSelectedCount() 函數中的 include\_excluded 引數設定為預設值 False，則此狀態類型傳回的計算與該函數傳回的計算相同。如需關於 GetNotSelectedCount() 的詳細資訊，請參閱 [GetNotSelectedCount](https://help.qlik.com/zh-TW/qlikview/September2025/Subsystems/Client/Content/QV_QlikView/ChartFunctions/FieldFunctions/GetNotSelectedCount.htm)。 | 3 | D |
| 替代 | 在計算中納入替代值。關於等效函數，請參閱 [GetAlternativeCount](https://help.qlik.com/zh-TW/qlikview/September2025/Subsystems/Client/Content/QV_QlikView/ChartFunctions/FieldFunctions/getalternativecount.htm)。 | 4 | A |
| 已排除 | 在計算中納入已排除 (未選取) 的值。關於等效函數，請參閱 [GetExcludedCount](https://help.qlik.com/zh-TW/qlikview/September2025/Subsystems/Client/Content/QV_QlikView/ChartFunctions/FieldFunctions/getexcludedcount.htm)。 | 5 | X |
| 已選取且已排除 | 在計算中納入所選的排除值。 | 6 | XS |

## 什麼情況下使用

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

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

範例與結果

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

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

[](https://help.qlik.com/en-US/qlikview/Subsystems/Client/Content/QV_QlikView/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. 在第一個列表框中新增 First name 作為維度。在第二個列表框中新增 Last name 作為維度。

3. 接下來，使用此量值建立直式表格：

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

4. 在 First name 列表框中，選取值 Mark 和 Peter。在 Last name 篩選列表框中，選取值 Carr。

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

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

[](https://help.qlik.com/en-US/qlikview/Subsystems/Client/Content/QV_QlikView/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. 在第一個列表框中新增 First name 作為維度。在第二個列表框中新增 Last name 作為維度。

3. 接下來，使用此運算式建立直式表格：

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

4. 在 First name 列表框中，選取值 John 和 Peter。在 Last name 列表框中，選取值 Franc。

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

6. 編輯直式表格並將現有運算式替換為以下內容：

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

7. 保留現有選項，在 Last name 運算式中選取值 Anderson。

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