分享

手废了,做个表复制粘贴3000次,只因不会For Next循环语句,1分钟我却搞半天

 Excel不加班 2024-05-23 发布于广东
与 30万 粉丝一起学Excel


VIP学员的问题,左边是从系统导出来的,现在希望每个房间都增加一行标题。原始数据有几千行,除了用复制,粘贴标题行,重复无数次之外,有没更快捷的方法?

重复一个动作几千次,手估计要废了。其实,在Excel里面有一个循环语句,可以代替手工操作,只要告诉她重复多少次即可。

先跟卢子一起来完成第一次操作,复制标题,插入到小计下一行。这个操作是需要记录下来,专业点叫录制宏。点开发工具,录制宏,复制第1行,选择第4行,右键,插入复制的单元格,停止录制。

点开发工具,VB,模块1,就可以看到刚刚录制的宏。

直接录制的代码,其实可以进行简化。

    Rows("1:1").Select

    Selection.Copy

可以简化成Rows("1:1").Copy,也就是复制第1行。

    Rows("4:4").Select

    Range("B4").Activate

    Selection.Insert Shift:=xlDown

可以简化成Range("A4").Insert Shift:=xlDown,也就是在A4插入刚刚复制的标题。

重点来了Range("A4")这个是变动的,需要判断上一行有小计2字,就在下一行插入标题。也就是需要进行一次判断,在VBA里面也有IF。
If Range("A" & I) = "小计" Then
    
    Rows("1:1").Copy
    Range("A" & I + 1).Insert Shift:=xlDown

End If

I这里是变量,从1到17,这里就需要循环语句For Next,有一个注意点因为插入标题后,行数会改变,必须先从17行开始到1行往上判断,步长为-1。最终代码出来了。
Sub 插入标题()
Dim i%

For i = 17 To 1 Step -1

If Range("A" & i) = "小计" Then
    
    Rows("1:1").Copy
    Range("A" & i + 1).Insert Shift:=xlDown

End If

Next

End Sub

运行代码,就批量将标题插入完毕。

录制宏得到的是傻瓜式的代码,从中获取关键的代码,再修改才能得到智能的代码。

方法比努力更重要。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多