【问题标题】:Creating a flattened list from a rowset从行集中创建扁平化列表
【发布时间】:2014-08-12 09:57:19
【问题描述】:

我在表格中有一个数据集。我试图展平一列,以便我可以看到所有值,分隔在一个单元格中。我已经用层次结构尝试过这个,但到目前为止还没有解决。示例数据集如下。

谁能告诉我这是否可行?

╔════════╦════════╦═══════╦═════════════════╗
║ 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              ║
╚════════╩════════╩═══════╩═════════════════╝

【问题讨论】:

  • 您能详细解释一下您的展平列表字段包含的内容吗?我不确定我是否理解。
  • 我知道这是一个古老的问题,但您还记得最好的方法是什么吗?

标签: excel powerpivot dax


【解决方案1】:

我曾多次为完全相同的问题苦苦挣扎,但我无法找到一个简单的解决方案,即 PowerPivot。 这在数据库中当然是可行的(我用过的最简单的方法是 LISTAGG aggreage functionOracle / PostgreSQL 中可用 - 如果该选项是可用的)。 Microsoft's SQL Server's approach 并没有那么晦涩,但工作方式几乎相同。

如果您仅限于 Excel,那么最快和最简单的方法是使用 VBA 宏,或者只是使用可用的扩展之一。我个人使用来自AbleBits 的 Excel 附加包(无从属关系)。

Combine Row 功能完全符合您的要求。它查找唯一 ID(在您的示例中为案例 ID),然后如果有多个与其关联的记录(测试 ID),它将它们连接到由您选择的分隔符分隔的值数组中。

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

数据来源:

合并行屏幕:

这是最终结果:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-14
    • 2010-12-08
    • 1970-01-01
    • 2012-07-01
    • 2017-09-24
    • 1970-01-01
    相关资源
    最近更新 更多