如何在不使用VBA的情况下将矩阵转换为4列表(Data - PivotTable和PivotChart Report)

时间:2017-08-20 10:33:13

标签: excel matrix pivot-table pivot-chart

我需要转换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')

1 个答案:

答案 0 :(得分:0)

着眼于两组数量,你要做的事情的本质是变换表" A" N列和3行到表" B"有3 * N行和1列。

桌子左边(或右边)的几个辅助列" B"可用于识别" A"的哪一行和哪一行。它与表#34; 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"。

表格中的CustomerProduct Code列" B"是使用=INDEX(tableAcol,Row)得出的,其中tableACol代表表格中的相应列" A"例如$B$3:$B$13 Customer。使用Quantity生成=INDEX(tableAquantities, Row, Col)列,其中tableAquantities是表格中的N行和3列的范围" A"包含数量值。 Month列需要一系列3个单元格排列为连续的行或列,其中包含" 1月"," 2月"," 3月"并在表格中生成" B"使用=INDEX(months, Col) months表示3个单元格范围。

在没有明确添加辅助列的情况下,有另一种方法可以实现相同的结果。这使用=ROW()函数计算表格的每一行的数据行号" B"然后在其他公式中使用它来计算相应(Row,Col)对的两个值。这种方法导致一些繁琐且相当重复的公式用于生成表格" B"。如果没有理由避免使用辅助列,那么使用它们 - 它们代表了一种更简单,更容易理解的方法。