excel中有一组n行3列的数据,数据每210行3列一组。如何快速将数据分列。
答案:2 悬赏:20 手机版
解决时间 2021-11-16 18:30
- 提问者网友:记得曾经
- 2021-11-16 02:04
excel中有一组n行3列的数据,数据每210行3列一组。如何快速将数据分列。
最佳答案
- 五星知识达人网友:荒野風
- 2021-11-16 03:42
Sub ccol()
Application.ScreenUpdating = False
s = Sheet1.UsedRange.Rows.Count
t = Int(s / 200)
For i = 1 To t
Range(Cells(i * 200 + 1, 1), Cells(i * 200 + 200, 3)).Cut
Cells(1, 4 * i + 1).Select
ActiveSheet.Paste
Next
Application.ScreenUpdating = True
End Sub以上代码放在VBA sheet1中运行即可
追问能解释一下吗,因为数据有时是随着仪器测试结果而出现波动。
如果我要是改动200行这个数据,应该怎么改代码。比如我要是想把数据改成150行3列为一组。追答Sub ccol()
'每x行一组,直接把有200的地方改为x就行了
'一组y列,要修改两个地方:
'Range(Cells(i * 200 + 1, 1), Cells(i * 200 + 200, y)).Cut
'Cells(1, (y+1) * i + 1).Select y+1而不是y是因为各组要空一行
Application.ScreenUpdating = False '关闭屏幕更新,不然屏幕闪动厉害,钛合金忽略~
s = Sheet1.UsedRange.Rows.Count 's是数据总行数
t = Int(s / 200) 't是要另分的组数
For i = 1 To t
Range(Cells(i * 200 + 1, 1), Cells(i * 200 + 200, 3)).Cut '对除了前200的每200行数据剪切
Cells(1, 4 * i + 1).Select '选中要粘贴的单元格。第i组数据粘贴到 第4*i+1列,如:第1组数据粘贴到第5列,第2组第9列
ActiveSheet.Paste '粘贴
Next
Application.ScreenUpdating = True '恢复屏幕刷新
End Sub
Application.ScreenUpdating = False
s = Sheet1.UsedRange.Rows.Count
t = Int(s / 200)
For i = 1 To t
Range(Cells(i * 200 + 1, 1), Cells(i * 200 + 200, 3)).Cut
Cells(1, 4 * i + 1).Select
ActiveSheet.Paste
Next
Application.ScreenUpdating = True
End Sub以上代码放在VBA sheet1中运行即可
追问能解释一下吗,因为数据有时是随着仪器测试结果而出现波动。
如果我要是改动200行这个数据,应该怎么改代码。比如我要是想把数据改成150行3列为一组。追答Sub ccol()
'每x行一组,直接把有200的地方改为x就行了
'一组y列,要修改两个地方:
'Range(Cells(i * 200 + 1, 1), Cells(i * 200 + 200, y)).Cut
'Cells(1, (y+1) * i + 1).Select y+1而不是y是因为各组要空一行
Application.ScreenUpdating = False '关闭屏幕更新,不然屏幕闪动厉害,钛合金忽略~
s = Sheet1.UsedRange.Rows.Count 's是数据总行数
t = Int(s / 200) 't是要另分的组数
For i = 1 To t
Range(Cells(i * 200 + 1, 1), Cells(i * 200 + 200, 3)).Cut '对除了前200的每200行数据剪切
Cells(1, 4 * i + 1).Select '选中要粘贴的单元格。第i组数据粘贴到 第4*i+1列,如:第1组数据粘贴到第5列,第2组第9列
ActiveSheet.Paste '粘贴
Next
Application.ScreenUpdating = True '恢复屏幕刷新
End Sub
全部回答
- 1楼网友:刀戟声无边
- 2021-11-16 03:50
Sub fenzu()
Dim i As Integer
Dim c As Integer
c = 0
Application.ScreenUpdating = False
For i = 212 To [A65536].End(xlUp).Row Step 210
c = c + 1
Range("A" & i & ":C" & i + 209).Cut
Cells(2, c * 4 + 1).Select
ActiveSheet.Paste
Next
Application.ScreenUpdating = True
End Sub追问要是,我想150行为一组的话,要怎么改代码啊?急求
Dim i As Integer
Dim c As Integer
c = 0
Application.ScreenUpdating = False
For i = 212 To [A65536].End(xlUp).Row Step 210
c = c + 1
Range("A" & i & ":C" & i + 209).Cut
Cells(2, c * 4 + 1).Select
ActiveSheet.Paste
Next
Application.ScreenUpdating = True
End Sub追问要是,我想150行为一组的话,要怎么改代码啊?急求
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯