如果Field2满足特定条件,我如何在数据透视表中创建一个计算Field的计算字段来计算Field1的不同值?我的局限性:
这是我想要实现的一个例子。原始数据:
╔═════════════╦═══════════╦═════════╗
║ 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的组合)的方法。我可以使用数据透视表字段吗?
我没有任何VBA背景。使用Excel 2013。
答案 0 :(得分:1)
我建议创建一个数据透视表,将此数据添加到已选中的数据模型,Date Period
表示ROWS,Field 2
表示COLUMNS,不同计数Client ID
表示VALUES。
我很欣赏这可能算作"只是一个字段更改设置"。
答案 1 :(得分:1)
经过一番游戏后,我想我已经弄清楚了:
您安装 PowerPivot 加载项(文件 - >选项 - >加载项 - >托管:COM加载项 - >检查Microsoft Office PowerPivot for Excel 2013)获取PowerPivot选项卡。
您需要将数据添加到数据模型中(通过单击“管理”并导入数据,或突出显示该表并单击“添加到数据模型”)。然后,单击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 ║
╚═════════════╩════════════════════════════════════════╝