【问题标题】:How to convert matrix to 4-column table without using VBA (Data - PivotTable and PivotChart Report)如何在不使用 VBA 的情况下将矩阵转换为 4 列表(数据 - 数据透视表和数据透视图报告)
【发布时间】:2017-08-20 10:33:13
【问题描述】:

我需要将 Excel 矩阵“A”转换为表“B”,但不使用 VBA。最好是“反向枢轴”,“反枢轴”,“扁平化”,“标准化”...... Picture of what I have and need to receive 有类似的主题,但找不到我感兴趣的确切主题。 这里描述了我正在寻找的东西,但在 VBA 中完成: excel macro(VBA) to transpose multiple columns to multiple rows 这里没有 VBA,但只保留并重复 1 列: Convert matrix to 3-column table ('reverse pivot', 'unpivot', 'flatten', 'normalize')

【问题讨论】:

    标签: excel matrix pivot-table pivot-chart


    【解决方案1】:

    关注两组数量,你要做的实质是将N列3行的表“A”转换为3*N行1列的表“B”。

    表“B”左侧(或右侧)的几个辅助列可用于识别“A”的哪一行和哪一列与表“B”中的每一行匹配。这些帮助列看起来像

    Row Col 
     1   1
     2   1
     3   1
      ...     
     N   1
     1   2
     2   2
     3   2
      ...
     N   2
     1   3
     2   3
     3   3
      ...
     N   3
    

    从包含对 (1,1) 的初始行开始,为下一行中的对创建一对 =IF() 公式是一项简单的任务,如果向下复制,将生成剩余的行和列值对.

    一旦生成,这些(Row, Col) 对几乎提供了生成表“B”的行所需的一切。

    表“B”中的CustomerProduct Code 列是使用=INDEX(tableAcol,Row) 派生的,其中tableACol 表示表“A”中的相应列,例如$B$3:$B$13 代表CustomerQuantity 列是使用 =INDEX(tableAquantities, Row, Col) 生成的,其中 tableAquantities 是表“A”中包含数量值的 N 行和 3 列的范围。 Month 列需要 3 个单元格的范围,这些单元格排列为包含“一月”、“二月”、“三月”值的连续行或列,并使用 =INDEX(months, Col) 在表“B”中生成,其中months 表示3 单元格范围。

    有一种替代方法可以在不显式添加辅助列的情况下获得相同的结果。这使用=ROW() 函数来计算表“B”的每一行的数据行号,然后在进一步的公式中使用它来计算相应(Row,Col) 对的两个值。这种方法导致生成表“B”的一些繁琐且相当重复的公式。如果没有理由避免使用辅助列,那么就使用它们——它们代表了一种更简单、更容易理解的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-21
      • 2017-10-01
      • 1970-01-01
      • 2021-10-25
      • 1970-01-01
      • 2021-11-01
      相关资源
      最近更新 更多