我有一个有 5 列的表,如下所示:
A1 B1 C1 D1 E1
A2 B2 C2 D2 E2
A3 B3 C3 D3 E3
...
我需要它把它重塑成一个像这样的 3 列表:
A1 B1 C1
A1 B1 D1
A1 B1 E1
A2 B2 C2
A2 B2 D2
A2 B2 E2
A3 B3 C3
A3 B3 D3
A3 B3 E3
...
在 Excel 2016 中最简单的方法是什么?蒂亚!
我有一个有 5 列的表,如下所示:
A1 B1 C1 D1 E1
A2 B2 C2 D2 E2
A3 B3 C3 D3 E3
...
我需要它把它重塑成一个像这样的 3 列表:
A1 B1 C1
A1 B1 D1
A1 B1 E1
A2 B2 C2
A2 B2 D2
A2 B2 E2
A3 B3 C3
A3 B3 D3
A3 B3 E3
...
在 Excel 2016 中最简单的方法是什么?蒂亚!
将数据从列转置到行的最简单方法如下:
资源
在F1中输入:
在G1中输入:
在H1中输入:
并向下复制:
如果您有大量数据,您可以考虑使用 PowerQuery 来避免使用大量公式。
单击数据中的任意位置并使用数据>获取和转换数据>从表/范围:
在 Power Query 编辑器中,选择要取消透视的列并使用 Transform>Any Column>Unpivot Only Selected Columns(使用“Unpivot Columns”下拉列表):
取消透视后,右键单击“属性”列并选择“删除”:
现在使用 Home>Close & Load 将结果放入工作簿的工作表中。
这种方法的一个好处(除了快速和易于理解之外)是,如果您将更多数据添加到源表中,您可以通过右键单击输出并从上下文菜单。
您要做的是 Unpivot 或 Melt。我可以想到三种方法来做到这一点:
每个都有优点和缺点。Offset 的优点是在您输入数据后立即给出答案。不利的一面是,您必须将公式复制到目标位置,因此如果输入数据的大小发生变化,则必须相应地复制公式。此外,OFFSET 是一个不稳定的函数,它可能会也可能不会影响工作簿的性能。
Power Query 方法要求您在每次更改数据时刷新数据。
动态数组就像偏移量一样,它们立即计算,但它们具有随着数据变化而重塑自身的优势,并且它们是非易失性的。它们的缺点是它们会自行将结果动态写入工作表中,因此如果您有任何占用的单元格,公式将溢出。
也就是说,这是一种使用 LET 的动态数组方法,可以更容易地理解、修改和调试。
unPivMatrix是您要分发的列 - 因此这些将是您示例中审阅者的身份。byMatrix是您想要取消透视它们的列 - 这些将是您示例中的 SKU 组件。想想 excel 中的数据透视表。byMatrix是数据透视所依据的行,unPivMatrix是要取消透视的数据。
此公式首先为 unpivot 创建一个形状,以便可以将其多路复用到单个列(称为mux),如下所示:
结果被放入demux中,它首先创建一个 byMatrix 数组,该数组为unPivMatrix中的每一列重复byMatrix列值
通过引用比byMatrix中实际存在的列多一列,INDEX 函数会引发错误。
利用此错误将两个数组(byMatrix和mux的demux)有效地融合在一起。通过将结果包装在 IFERROR 中,我们可以替换 #REF!来自mux的值出错。
这个公式现在是基于动态数组的通用反透视。即,您可以将任何范围放入unPivMatrix和byMatrix,并以 UNPIVOT 在 Power Query 中的工作方式获得您想要的结果。