如何转置和重新分组 Excel 中排列在单列中的单元格?

如何转置和重新分组 Excel 中排列在单列中的单元格?

我最近需要从一个网站收集一些数据,为此我使用了一个简单的抓取脚本来收集数据并将其存储在 excel 文件中。我现在面临的问题是,以目前的形式,我几乎无法将数据用于任何目的。现在,我的 excel 文件如下所示: 当前形式

我需要它采用更“可读”和简洁的格式,例如 在此处输入图片描述

显然,我必须转置较小的列并将它们一个接一个地排列,但我不知道该怎么做。
有没有什么方法可以自动完成这个过程?

答案1

在第 I 列中,在 I2 中写入 1,在 I3 中写入 2,选择 1 和 2 并向下拖动直到最后一个数字。
在 J2 中写入:
=IFERROR(INDEX($E$2:$E$24,MATCH($I2,$E$2:$E$24,0)+1),"")
在 K2 中写入:
=IFERROR(INDEX($E$2:$E$24,MATCH($I2,$E$2:$E$24,0)+2),"")

更改 E2:E24 直到数据中的最后一行,并在拖动公式时保留 $ 以修复引用
将两个公式拖到同一列中
它将返回数据(列 I、J、K)(如果有)或空“”(如果没有值)
完成后,您可以选择新的数据复制,将特殊值粘贴到另一个位置,然后就可以正常使用了

在此处输入图片描述

答案2

如果数据的结构像示例中那样规则,则只需将线性数组中的索引转换为矩阵的行和列索引并用它INDEX()来填充它。

输入此公式

=IFERROR(INDEX($E$2:$E$24,(ROW()-2)*4+COLUMN(A1)),"")

并将I2其拖拽/复制下来。

在此处输入图片描述

答案3

这是一个适合您的公式(以 i2 为单位):

=INDEX($E$1:$C$23, SMALL(INDEX((I$1=$D$1:$D$24)*(MATCH(ROW($D$1:$D$24), ROW($D$1:$D$24)))+(I$1<>$D$1:$D$24)*1048577, 0, 0), ROW(Z1)))

相关内容