2015-04-27 113 views
0

如何在数据透视表中创建一个计算域来计算Field1的不同值,前提是Field2满足特定条件?我的限制:根据计算域中的条件计算不同的值

  • 需要在数据透视表
  • 需要一个计算字段
  • 计算字段必须是一个独特的计数“公式”,不是一个简单的字段设置变化。

这是我想要实现的一个例子。原始数据:

╔═════════════╦═══════════╦═════════╗ 
║ 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,频率和MATCH)非数据透视表数据。我可以使用数据透视表字段来做到这一点吗?

我没有任何VBA背景。使用Excel 2013年

回答

0

我建议创建与此数据添加到数据模型数据透视检查,Date Period的行,Field 2列的和值Client ID重复计数。

我很欣赏这可以算作“简单的场变化设置”。

SO2990986 example

+0

感谢帮助!我花了一段时间,但我想出了如何使用PowerPivot表而不是普通数据透视表来生成它。 – Melissa

1

一些玩耍后,我想我已经想通了:

  • 使用的PowerPivot表
  • 使用计算领域
  • 使用在计算领域的CALCULATE函数做一个独特的计数给定一个过滤器/条件

Yo ü安装PowerPivot加载项(文件 - >选项 - >加载项 - >托管:COM加载项 - >检查Microsoft Office PowerPivot for Excel 2013)以获取PowerPivot选项卡。

您需要将数据添加到数据模型(通过单击“管理”并导入数据,或突出显示表并单击“添加到数据模型”)。然后,您单击PowerPivot管理区域中的数据透视表按钮。

将日期期间拖动到行。然后,在PowerPivot选项卡中,单击计算字段 - >新计算的字段。现在

,我的字段(命名为:鲜明客户端计数凡字段2 = 1)具有下式:

=CALCULATE(DISTINCTCOUNT(Table1[Client ID]),Table1[Field 2] = 1) 

在哪里表1是我的数据模型(源数据)的名称。 CALCULATE函数允许您将过滤器应用于聚合计算。 DISTINCTCOUNT是您输入的第一个字段的明显数量。

下面是最终输出:

╔═════════════╦════════════════════════════════════════╗ 
║ Date Period ║ Distinct Client Count Where Field2 = 1 ║ 
╠═════════════╬════════════════════════════════════════╣ 
║ 1   ║          3 ║ 
║ 2   ║          1 ║ 
║ Grand Total ║          3 ║ 
╚═════════════╩════════════════════════════════════════╝