从行集创建展平列表

时间:2014-08-12 09:57:19

标签: excel powerpivot dax

我在表格中有一个数据集。我试图压扁一列,以便我可以看到所有值,在一个单元格中分隔。我用层次结构尝试了这个,但到目前为止还没能解决。样本数据集如下所示。

有人可以建议这是否可行?

╔════════╦════════╦═══════╦═════════════════╗
║ CaseID ║ TestID ║ Batch ║ Flattened List  ║
╠════════╬════════╬═══════╬═════════════════╣
║ A0001  ║ T1     ║ A     ║ T1|  T1 | T2    ║
║ A0001  ║ T1     ║ B     ║ T1|  T1 | T2    ║
║ A0001  ║ T2     ║ A     ║ T1|  T1 | T2    ║
║ A0002  ║ T1     ║ A     ║ T1 | T1         ║
║ A0002  ║ T1     ║ B     ║ T1 | T1         ║
║ A0003  ║ T1     ║ A     ║ T1              ║
║ A0004  ║ T4     ║ A     ║ T4              ║
╚════════╩════════╩═══════╩═════════════════╝

1 个答案:

答案 0 :(得分:0)

我在同样的问题上已经多次努力,但是我无法找到一个简单的解决方案是PowerPivot。 在数据库中肯定是可行的(我用过的最简单的是 Oracle / PostgreSQL 中提供的LISTAGG aggreage function - 如果该选项可用)。 Microsoft's SQL Server's approach并不是那么冷静,但工作方式大致相同。

如果您仅限于Excel,那么最快速,最简单的方法是使用VBA宏,或者只使用其中一个可用扩展。我个人使用来自AbleBits的Excel附加软件包(没有任何从属关系)。

组合行功能完全符合您的要求。它查找唯一ID(示例中为Case ID),然后如果有多个与之关联的记录(Test ID),它会将它们连接成一个由您选择的分隔符分隔的值数组。

下面是逐屏记录的过程,显示了如何转换数据。但是有一个缺点 - 如果您的数据集足够大(想想数百行),那么这将不是最快的解决方案,我不确定这可以自动化到什么程度。

数据来源:

enter image description here

合并行屏幕:

enter image description here

enter image description here

enter image description here

enter image description here

这是最终结果:

enter image description here