Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2584|回复: 9

[已解决]EXCEL中隔N行插入指定行

[复制链接]
发表于 2016-12-12 15:43 | 显示全部楼层 |阅读模式
EXCEL中隔N行插入指定行

各位老师们,我试着做了一个,没有成功,请老师们帮帮修改下,谢谢老师们了!
Sub test()
Dim ar, br, MyRange As Range
Dim wr
On Error Resume Next
Set ar = Application.InputBox(prompt:="请输入开始单元格", Title:="提示", Default:="请选择", Type:=8)
On Error Resume Next
Set br = Application.InputBox(prompt:="请选择需要插入的行", Title:="提示", Default:="请选择", Type:=8)
wr = InputBox("请问隔几行插入", "提示", "隔几行")
aend = ar.End(xlUp).Row '取得最后行号
Application.ScreenUpdating = False
For i = ar To aend Step wr '从ar开始循环到最后一行,步长为wr(每隔wr行插入)
Set MyRange = br '把第br引用赋给变量 myrange
MyRange.EntireRow.Insert Shift:=xlDown '整行插入
Next
Application.ScreenUpdating = True
End Sub
谢谢老师们了!

最佳答案
2016-12-13 10:51
yjwdjfqb 发表于 2016-12-12 21:27
老师你好,可能还是我表述的不清楚

我是想,这样

修改这一句
For i = ar1 + wr - 1 To aend - 1 Step wr
发表于 2016-12-12 16:23 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2016-12-12 16:34 | 显示全部楼层
七彩屋 发表于 2016-12-12 16:23
不上传附件的话很难理解要求

TT截图未命名.jpg
VBA隔n行,插入指定行.rar (8.91 KB, 下载次数: 4)
回复

使用道具 举报

发表于 2016-12-12 17:36 | 显示全部楼层
  1. Sub test()
  2. Dim ar, br, MyRange As Range
  3. Dim wr
  4. On Error Resume Next
  5. Set ar = Application.InputBox(prompt:="请输入开始单元格", Title:="提示", Default:="请选择", Type:=8)
  6.   ar1 = ar.Row
  7. On Error Resume Next
  8. Set br = Application.InputBox(prompt:="请选择需要插入的行", Title:="提示", Default:="请选择", Type:=8)
  9.   br1 = br.Row
  10. wr = InputBox("请问隔几行插入", "提示", "隔几行")
  11.   aend = Range("a65536").End(xlUp).Row '取得最后行号
  12. Application.ScreenUpdating = False
  13.   For i = ar1 + wr To aend Step wr '从ar开始循环到最后一行,步长为wr(每隔wr行插入)
  14.     n = n + 1
  15.       Rows(i + n).EntireRow.Insert Shift:=xlDown  '整行插入
  16.       Rows(br1).Copy Cells(i + n, 1)
  17.   Next
  18. Application.ScreenUpdating = True
  19. End Sub
复制代码
回复

使用道具 举报

发表于 2016-12-12 17:37 | 显示全部楼层
就按你原来的代码上修改一下
回复

使用道具 举报

 楼主| 发表于 2016-12-12 19:20 | 显示全部楼层
七彩屋 发表于 2016-12-12 17:37
就按你原来的代码上修改一下

老师你好,刚才是我把附件制作错了,现在更正下,请老师看下这个附件好吧
附件中有个手工结果表。
请老师帮改下好吧,谢谢了老师!
VBA隔n行,插入指定行二.rar (9.7 KB, 下载次数: 11)
回复

使用道具 举报

发表于 2016-12-12 21:18 | 显示全部楼层
Sub Test()
Dim ar, br, MyRange As Range
Dim wr
On Error Resume Next
Set ar = Application.InputBox(prompt:="请输入开始单元格", Title:="提示", Default:="请选择", Type:=8)
  ar1 = ar.Row
On Error Resume Next
Set br = Application.InputBox(prompt:="请选择需要插入的行", Title:="提示", Default:="请选择", Type:=8)
  br1 = br.Row
wr = InputBox("请问隔几行插入", "提示", "隔几行")
  aend = Range("a65536").End(xlUp).Row '取得最后行号
Application.ScreenUpdating = False
  For i = ar1 To aend - 1 Step wr '从ar开始循环到最后一行,步长为wr(每隔wr行插入)
    n = n + 1
      Rows(i + n).EntireRow.Insert Shift:=xlDown  '整行插入
      Rows(br1).Copy Cells(i + n, 1)
  Next
Application.ScreenUpdating = True
End Sub
回复

使用道具 举报

发表于 2016-12-12 21:19 | 显示全部楼层
修改这里
For i = ar1 To aend - 1 Step wr
回复

使用道具 举报

 楼主| 发表于 2016-12-12 21:27 | 显示全部楼层
七彩屋 发表于 2016-12-12 21:19
修改这里
For i = ar1 To aend - 1 Step wr

老师你好,可能还是我表述的不清楚

我是想,这样
例如:我选择序号1的位置时,隔二行插入(要把序号1这一行算上,序号2这一行,就是二行了),所以就是在序号2后面插入、在4后面插入、在6后面插入
回复

使用道具 举报

发表于 2016-12-13 10:51 | 显示全部楼层    本楼为最佳答案   
yjwdjfqb 发表于 2016-12-12 21:27
老师你好,可能还是我表述的不清楚

我是想,这样

修改这一句
For i = ar1 + wr - 1 To aend - 1 Step wr

评分

参与人数 1 +12 收起 理由
yjwdjfqb + 12 谢谢老师的帮助!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-9 07:25 , Processed in 0.134534 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表