# GetStateCounts

GetStateCounts() 图表函数用于计算与指定选择状态匹配的唯一值的总数。

通过 GetStateCounts()，您可以将以下函数的计算合并到一个函数调用中：GetSelectedCount()、GetNotSelectedCount()、GetAlternativeCount()、GetPossibleCount() 和 GetExcludedCount()。所选排除值的计数也可添加到计算中。您可以指定每个函数计算是对返回的总和进行相加还是相减。

语法：

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

**返回数据类型：** 整数

参数

| 参数 | 描述 |
| --- | --- |
| field\_name | 您正在计算选择项状态的字段。不存在的字段名会导致空结果。 |
| state\_name | 备用状态的名称。如果参数为空 (`''`) 或 null，则使用继承的备用状态。使用 `$` 来显式使用默认状态。与现有状态不匹配的命名（非空）状态名称将导致 null 结果。 |
| state\_type | 字段值的一个或多个状态类型的列表。这些状态类型将被聚合到一个计数中。状态类型使用键来指定。用单引号输入每个键。<br><br>当省略此参数时，函数将返回一个字符串，其中包含字段的所有可用状态计数，顺序与枚举相同。<br><br>有关可以使用的状态列表，请参阅下表。 |

使用特定键引用状态类型。您可以使用键的数字或文本版本。在同一表达式中组合多个键以进一步自定义结果。您可以从总数中减去状态计数，而不是将其相加。为此，请使用文本键并在状态类型前加上减号 (`-`)。

状态类型以及减号（如果适用）需要用一组单引号括起来。

每个字段状态类型的键

| 字段状态类型 | 描述 | 数字键 | 文本键 |
| --- | --- | --- | --- |
| 已选择 | 在计算中包括选定值。有关等效函数，请参阅[GetSelectedCount](https://help.qlik.com/zh-CN/qlikview/September2026/Subsystems/Client/Content/QV_QlikView/ChartFunctions/FieldFunctions/getselectedcount.htm)。 | 1 | S |
| 可选 | 在计算中包括可选（未选择，但可以选择）值。有关等效函数，请参阅[GetPossibleCount](https://help.qlik.com/zh-CN/qlikview/September2026/Subsystems/Client/Content/QV_QlikView/ChartFunctions/FieldFunctions/getpossiblecount.htm)。 | 2 | O |
| 取消选择 | 在计算中包括未选定值。此状态类型仅在字段处于“和”模式时可用。<br><br>假设该函数中的 include\_excluded 参数设置为默认值 False，则此状态类型返回与 GetNotSelectedCount() 函数返回的相同的计算结果。有关 GetNotSelectedCount() 的更多信息，请参阅[GetNotSelectedCount](https://help.qlik.com/zh-CN/qlikview/September2026/Subsystems/Client/Content/QV_QlikView/ChartFunctions/FieldFunctions/GetNotSelectedCount.htm)。 | 3 | D |
| 替代 | 在计算中包括替代值。有关等效函数，请参阅[GetAlternativeCount](https://help.qlik.com/zh-CN/qlikview/September2026/Subsystems/Client/Content/QV_QlikView/ChartFunctions/FieldFunctions/getalternativecount.htm)。 | 4 | A |
| 排除 | 在计算中包括排除（未选定）值。有关等效函数，请参阅[GetExcludedCount](https://help.qlik.com/zh-CN/qlikview/September2026/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 字段处于“和”模式。<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 也包含在计数中。