我需要转换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')
答案 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"。
表格中的Customer
和Product 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"。如果没有理由避免使用辅助列,那么使用它们 - 它们代表了一种更简单,更容易理解的方法。