如何自动使excel每行的“列”数增多或减少

在excel中,如何也能像word那样自动把每行的“列”数增多或减少?

例如:

原有9个单元格,排列成3行,每行3列:
123
456
789

如何使3行3列的单元格的列数增多1列或2列而排成4列或5列:
4列:1234 5列:12345
5678 6789
9

或使3行3列的单元格的列数减少1列而排成2列:
2列:12
34
56
78
9

我不懂编程什么的,恳请详细说明,以便能依样画葫芦,十分感谢!
遗憾,上文原来在记事本写好后粘贴到“我的提问”中,但在这里例举的列数增多和列数减少所显示的各列排列不对齐。应该是:

原有9个单元格,排列成3行,每行3列:
123
456
789

如何使3行3列的单元格的列数增多1列或2列而排成4列或5列:
4列: 5列:
1234 12345
5678 6789
9

或使3行3列的单元格的列数减少1列而排成2列:
2列:
12
34
56
78
9

楼主, 请用如下VBA代码:

Sub Re_sort()
Dim row As Integer '统计数据源的行数
Dim i As Integer '作为数据源的行变参量
Dim j As Integer '作为数据源的列变参量
Dim col As Integer '存放单元格G1中的值(结果中要求转换后的列数)
Dim n As Integer '统计在输出结果过程中已输出几列,目的是跟G1中的值比较后决定换不换行
Dim r As Integer '作为结果中的行变参量
Dim c As Integer '作为结果中的列变参量
row = 2 '以下四行作用是统计数据数据源中共有多少行
Do While Sheet1.Cells(row, 1) <> ""
row = row + 1
Loop
col = Sheet1.Cells(1, 7) '取G1中的值
r = 2 '存放输出结果起点的行值
c = 8 '存放输出结果起点的列值
n = 1 '结果输入列计算器放1
For i = 2 To row 'i从2变到row 数据源从第二行开始
For j = 1 To 3 'j从1变到3, 3是数据源的列值
Sheet1.Cells(r, c) = Sheet1.Cells(i, j) '将数据源第i行,第j列的值放入第r行,第c列(r和c的初始值是第一个结果要存放的行和列值)
n = n + 1 '输出一个结果将计算器n+1
If n <= col Then '如果n<=col时 那么 (col是G1所要求的列数)
c = c + 1 'c在原来的基础上 +1
Else '如果n>col 时 那行
n = 1 '让n=1, 这意味着n>col时结果区该换行了
r = r + 1 'r=r+1 输出结果的行值加1
c = 8 'c=8 输入结果的列值变8 起点时的列值
End If '条件结束
Next j 'j增加1 如果j不大于5 继续从 For j = 1 To 5 那行向下执行
Next i 'i增加1 如果i不大于row(数据源的总行数) 继续从 For i = 2 To row 那行向下执行

End Sub '全部执行结束, 转换完毕
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-07-14
ALT+F11,粘贴以下代码【变成4列】,F5运行。

Sub xx()
x = 1
y = 7
For i = 1 To 12
For j = 1 To 3
Cells(x, y) = Cells(i, j)
y = y + 1
If y > 10 Then
y = 7
x = x + 1
End If
Next j, i
End Sub
第2个回答  2009-07-14
我知道用下面的公式可以将一列数据变成多列数据,至于你的问题我还不知道如何解决。若A列中我若干数据,在B1中输入:=INDIRECT("a"&(ROW()-1)*4+COLUMN(A1)), 并向右复制公式到E1单元格,然后向下复制B1:E1,就将A列分成为4列,将公式中的4换成如3、5、6、7等,同理,就能将A列数据分成3、5、6、7列。
第3个回答  2009-07-14
问题的关键是你增加的数的规则没有讲清楚。
相似回答