分享

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

 whoyzz 2024-05-23 发布于湖北


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条评论

    发表

    请遵守用户 评论公约

    类似文章 更多