【问题标题】:divide data in one column into more column in excel在excel中将一列中的数据分成更多列
【发布时间】:2012-06-30 17:58:31
【问题描述】:

我想在 Microsoft Excel 2007 中执行此操作

这是一个单列。我在一列中有 20098 个数据,如下所示。

1
2
3
4
5
6
7
8
131
1
31
31
31
31
41

我想像这样重新排列这些数据我该怎么做

1 4 7 1 31
2 5 8 31 31
3 6 131 31 41

【问题讨论】:

  • 列从上到下,行从左到右。你有什么,你希望如何组织它?
  • 不,不,它是一列。粘贴时出现问题
  • 但是你想把它分成三行还是三列?
  • 我认为你需要 vba 来实现这一点

标签: excel excel-formula


【解决方案1】:

如果您的数据在 A 列中,则在单元格 B1 中放入
=OFFSET($A1,3*(COLUMN()-COLUMN($B$1)),)
并向下和向右复制以根据需要拆分您的数据

【讨论】:

  • offset 是一个不稳定的函数,它会减慢我担心 20 000 多行的计算速度......
  • @deathApril 也许您应该在对 OP 没有提出的优化约束投票之前测试一下。 20,000 个单元格(不是您发布的行)在我的机器上立即计算出来。
  • 也许,但如果你不编辑你的答案,我无法撤销反对票;)
  • @deathApril 我运行了 FastExcel V3,你的 21000 单元计算(使用 INDEX($A:$A,(COLUMN()-2)*3 + ROW()))在 13.04 毫秒内运行,我的 21000 单元计算在 13.81 毫秒内运行。编辑即将发布... :)
  • 您能否测试常规的 excel 优化重新计算(可能会看到 volatile 函数之间的差异)?例如在 D5 =D2 中输入公式后 - 但你是对的,在这种情况下性能不是问题
【解决方案2】:

在结果范围的所有 3 行和 6700 列中使用此公式:

=INDEX($A:$A;(COLUMN()-first_column)*3 + ROW()-first_row+1)

其中first_column=column(..)first_row 是您希望获得第一个值的单元格的=row(..)

例如如果您使用 B1:IWS3 范围列出结果,则公式将为:

=INDEX($A:$A;(COLUMN()-2)*3 + ROW())

【讨论】:

  • @LasithMalinga 请接受您最满意的答案;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多