繁体   English   中英

Excel,将一列数据转换为多列

[英]Excel, convert data in one column to multiple columns

如图所示,我在一列中有 5 组2
我希望每组都在自己的列中。
有没有办法做到这一点?

我尝试将文本添加到列中,但没有奏效。

excel图片

通用解决方案

想象一下,我有一个从单元格B2开始的垂直数组,我想将其分成N 个堆叠的列。 我将从单元格E4 中放置这些列,如图所示。

在此处输入图片说明

实现我想要的代码是:

+OFFSET($B$2,(ROW()-ROW($E$4))*N+(COLUMN()-COLUMN($E$4)),0)

N替换为您想要的数字(以及在本例中使用您的特定值 B2 和 E4 的源和目标单元格),并垂直和水平扩展公式以形成您想要的N列矩阵。 对于 N=3 的情况,您会得到:

在此处输入图片说明

(PS:如果您的数组是水平的,请使用转置转换为垂直。然后您可以对结果矩阵进行转置,以获得最终结果。)

解释

逻辑很简单。 函数OFFSET具有三个强制输入。 第一个是您要转换的数组的第一个点(在上面的示例中, $B$2 。您选择的点的索引为 0,下一个索引为 1 等。所以,您想要的是将这些有序索引放入矩阵形式,如下所示(对于N=3的情况):

在此处输入图片说明

移动这些索引的规则在OFFSET函数的第二个条目中给出。 这基本上是一个公式,它使用一些固定值(放置结果的第一个单元格的行数和列数, ROW($E$4)COLUMN($E$4) ,分别等于 4 和 5),以及放置数字的单元格的变量值( ROW()COLUMN() )。 该公式计算实际行号和参考行号之间的差异,按 N 缩放,并添加实际和参考列之间的任何差异。 该公式为我们所需的输出矩阵提供了所需的系列 0、1、2、3...。

最后, OFFSET的最后一项为零,因为我们是用垂直列的数据进行变换,所以不需要水平偏移。

你可以用例如公式来做到这一点; 将此输入到 C1 并向下和向右填充:
=OFFSET($A$1,ROW()-1+(COLUMN()-3)*6,0)

在此处输入图片说明

取总单元格,将其分成 3 个并剪切和粘贴。 我浪费了 30 分钟尝试所有提供的解决方案。

我放弃了,现在我的项目完成了。 只用了大约 15 秒。

要将一列按列一阶拆分为多列,换句话说,无需转置,我们可以修改公式,如https://www.extendoffice.com/documents/excel/3132-excel-convert-vector-to -matrix.html ,是row first order的解决方案,即用transpose,交换ROW()和COLUMN()的角色,示例代码:

=OFFSET($A$1:$A$10494,ROW()-ROW($B$1)+((COLUMN()-COLUMN($B$1))*(ROWS($A$1:$A$10494)/18)),0,1,1)

这里 $a1:$a$10494 是源,$b$1 是目标,18 是要拆分的列数。 例如,这可用于获取 pdb 中 %debug 打印输出的表结构,这会将输出拆分为窄带。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM