根据计算字段中的条件计算不同的值
Count distinct values subject to condition in Calculated Field
如果 Field2 满足特定条件,我如何在数据透视表中创建一个计算字段来计算 Field1 的不同值?我的限制:
- 需要在数据透视表中
- 需要是计算字段
- 计算字段需要是唯一计数 "formula",而不仅仅是字段设置更改。
这是我正在努力实现的一个例子。原始数据:
╔═════════════╦═══════════╦═════════╗
║ Date Period ║ Client ID ║ Field 2 ║
╠═════════════╬═══════════╬═════════╣
║ 1 ║ A ║ 1 ║
║ 1 ║ A ║ 1 ║
║ 1 ║ A ║ 1 ║
║ 1 ║ B ║ 1 ║
║ 1 ║ B ║ 1 ║
║ 1 ║ C ║ 1 ║
║ 2 ║ A ║ 1 ║
║ 2 ║ A ║ 1 ║
║ 2 ║ B ║ 0 ║
║ 2 ║ C ║ 0 ║
║ 2 ║ C ║ 0 ║
╚═════════════╩═══════════╩═════════╝
数据透视表输出如下所示:
╔═════════════╦═══════════════════════════════════╦═══════════════════════════════════╗
║ Date Period ║ Distinct Clients where Field 2= 1 ║ Distinct Clients where Field 2= 0 ║
╠═════════════╬═══════════════════════════════════╬═══════════════════════════════════╣
║ 1 ║ 3 ║ 0 ║
║ 2 ║ 1 ║ 2 ║
╚═════════════╩═══════════════════════════════════╩═══════════════════════════════════╝
我见过使用数组函数(SUM、IF、FREQUENCY 和 MATCH 的组合)处理非主元数据的方法 table。我可以使用数据透视表字段执行此操作吗?
我没有任何 VBA 背景。使用 Excel 2013.
我建议创建一个数据透视表,并选中“将此数据添加到数据模型”,Date Period
代表行,Field 2
代表列,Client ID
代表值。
我很感激这可以算作 "simply a field change setting"。
经过一番尝试,我想我已经弄明白了:
- 使用 PowerPivot table
- 使用计算字段
- 在给定 filter/condition
的情况下,使用计算字段中的 CALCULATE 函数进行非重复计数
您安装 PowerPivot 附加组件(文件 -> 选项 -> 加载项 -> 托管:COM 加载项 -> 检查 Microsoft Office PowerPivot for Excel 2013) 获取 PowerPivot 选项卡。
您需要将数据添加到数据模型(通过单击“管理”并导入数据,或突出显示 table 并单击“添加到数据模型”)。然后,单击 PowerPivot 管理区域中的数据透视表按钮。
将日期时间段拖到行中。然后,在 PowerPivot 选项卡中,单击计算字段 -> 新建 计算字段.
现在,我的字段(名为:Distinct Client Count Where Field2 = 1)具有以下公式:
=CALCULATE(DISTINCTCOUNT(Table1[Client ID]),Table1[Field 2] = 1)
其中 Table1 是我的数据模型(源数据)的名称。 CALCULATE 函数允许您将过滤器应用于聚合计算。 DISTINCTCOUNT 是您输入的第一个字段的非重复计数。
这是最终输出:
╔═════════════╦════════════════════════════════════════╗
║ Date Period ║ Distinct Client Count Where Field2 = 1 ║
╠═════════════╬════════════════════════════════════════╣
║ 1 ║ 3 ║
║ 2 ║ 1 ║
║ Grand Total ║ 3 ║
╚═════════════╩════════════════════════════════════════╝
如果 Field2 满足特定条件,我如何在数据透视表中创建一个计算字段来计算 Field1 的不同值?我的限制:
- 需要在数据透视表中
- 需要是计算字段
- 计算字段需要是唯一计数 "formula",而不仅仅是字段设置更改。
这是我正在努力实现的一个例子。原始数据:
╔═════════════╦═══════════╦═════════╗
║ Date Period ║ Client ID ║ Field 2 ║
╠═════════════╬═══════════╬═════════╣
║ 1 ║ A ║ 1 ║
║ 1 ║ A ║ 1 ║
║ 1 ║ A ║ 1 ║
║ 1 ║ B ║ 1 ║
║ 1 ║ B ║ 1 ║
║ 1 ║ C ║ 1 ║
║ 2 ║ A ║ 1 ║
║ 2 ║ A ║ 1 ║
║ 2 ║ B ║ 0 ║
║ 2 ║ C ║ 0 ║
║ 2 ║ C ║ 0 ║
╚═════════════╩═══════════╩═════════╝
数据透视表输出如下所示:
╔═════════════╦═══════════════════════════════════╦═══════════════════════════════════╗
║ Date Period ║ Distinct Clients where Field 2= 1 ║ Distinct Clients where Field 2= 0 ║
╠═════════════╬═══════════════════════════════════╬═══════════════════════════════════╣
║ 1 ║ 3 ║ 0 ║
║ 2 ║ 1 ║ 2 ║
╚═════════════╩═══════════════════════════════════╩═══════════════════════════════════╝
我见过使用数组函数(SUM、IF、FREQUENCY 和 MATCH 的组合)处理非主元数据的方法 table。我可以使用数据透视表字段执行此操作吗?
我没有任何 VBA 背景。使用 Excel 2013.
我建议创建一个数据透视表,并选中“将此数据添加到数据模型”,Date Period
代表行,Field 2
代表列,Client ID
代表值。
我很感激这可以算作 "simply a field change setting"。
经过一番尝试,我想我已经弄明白了:
- 使用 PowerPivot table
- 使用计算字段
- 在给定 filter/condition 的情况下,使用计算字段中的 CALCULATE 函数进行非重复计数
您安装 PowerPivot 附加组件(文件 -> 选项 -> 加载项 -> 托管:COM 加载项 -> 检查 Microsoft Office PowerPivot for Excel 2013) 获取 PowerPivot 选项卡。
您需要将数据添加到数据模型(通过单击“管理”并导入数据,或突出显示 table 并单击“添加到数据模型”)。然后,单击 PowerPivot 管理区域中的数据透视表按钮。
将日期时间段拖到行中。然后,在 PowerPivot 选项卡中,单击计算字段 -> 新建 计算字段.
现在,我的字段(名为:Distinct Client Count Where Field2 = 1)具有以下公式:
=CALCULATE(DISTINCTCOUNT(Table1[Client ID]),Table1[Field 2] = 1)
其中 Table1 是我的数据模型(源数据)的名称。 CALCULATE 函数允许您将过滤器应用于聚合计算。 DISTINCTCOUNT 是您输入的第一个字段的非重复计数。
这是最终输出:
╔═════════════╦════════════════════════════════════════╗
║ Date Period ║ Distinct Client Count Where Field2 = 1 ║
╠═════════════╬════════════════════════════════════════╣
║ 1 ║ 3 ║
║ 2 ║ 1 ║
║ Grand Total ║ 3 ║
╚═════════════╩════════════════════════════════════════╝