Excel VBA 实例(14) – 依据指定单元格的值,复制并插入相同数量的行 - 永恒君的百宝箱

Excel VBA 实例(14) – 依据指定单元格的值,复制并插入相同数量的行

实用技巧 永恒君 195℃ 0评论

脐橙园基地

采摘忙

硕果累累

每到这个季节,都是赣南脐橙大量上市的时间。赣南脐橙不仅带富了大量的农民,也带动了诸如包装、加工、物流、电商等一大批行业繁荣发展,是赣南老区当之无愧的摇钱树,致富树。

本次的实例就是因此而起,举例如下图:

朋友电商的客户下单购买脐橙,有的客户同一个地址下单的数量会有2箱、3箱甚至更多箱。但是因为一箱脐橙20斤比较重,快递公司为了减轻压力,要求一个单号只能寄一箱。自然的,需要把每一行箱数大于2的都分拆为每行一箱,这样才能顺利给快递打单发货(你要是问我为啥不丢给快递让他们去弄?这个时候快递都是大爷,都要求他们的,拽的很,你想早点发货就要按他们说的做)。

例如:张三1订购2箱,需要向下复制一行,每行的订购箱数改为1,如下图

手工操作修改过程

这么一来,繁琐的操作就来了,插入多个空行 – 复制首行信息 – 把箱数都改为1。一天少也有几十箱,多的时候几百箱,手工一个一个改的话实在不行,效率太低。

繁琐重复的操作,又是在excel里面的数据,自然会想到VBA。永恒君花了几分钟帮朋友整理修改了一份VBA代码,效率立马就提上来了,效果如下:

点击按钮,选择脐橙箱数所在的单元格序列,确定即可。

修改一个单快的话也要5s左右,有的甚至更多。而有5s的时间,程序都可以运行n次了,朋友说,终于可以不用烦人的一行一行手工去改了,更可以腾出时间和精力放在其他的地方。

使用VBA的好处不就在于此嘛~~

上面VBA使用的代码分享如下:

Sub fenchai()
    Dim Rng As Range
    Dim i&, Col&, Fist, Last, j&
    Set Rng = Application.InputBox("请选择分拆数据列!", Type:=8)
    '用户选择数据列     Set Rng = Intersect(Rng.Parent.UsedRange, Rng)
    'intersect语句避免用户选择整列造成无谓运算     Col = Rng.Column 'Rng所在列     Fist = Rng.Row
    'Rng开始行,用户选择的区域并不是一定从第一行开始,因此需要此句判断     Last = Fist + Rng.Rows.Count - 1 'Rng结束行     Application.ScreenUpdating = False '取消屏幕更新     Application.DisplayAlerts = False     '取消消息提醒。当有值单元格被合并时屏蔽提示信息     Rng.Parent.Select '激活Rng对象所在的工作表,避免跨工作表操作问题     For i = Last To Fist Step -1     '对Rng进行从后向前遍历         For j = 1 To Cells(i, Col).Value - 1             Cells(i, Col).Value = 1             Rows(i).Copy
            Rows(i + j).Insert Shift:=xlDown
            Application.CutCopyMode = False         Next    
    Next End Sub 


同样的,永恒君把上面实例VBA的文件分享出来,需要的就直接使用吧。

后台回复实例14即可。


不少人对VBA代码有抵触心理,其实没有那么复杂,把他看成一个稍微复杂点的函数即可。

当然如果并不打算深入学习VBA,只是临时使用下,那只要会复制黏贴就好了!

至于怎么用VBA代码,可以参考之前的文章:

Excel vba 实例(1) – 批量制作工资表头

Excel vba 实例(2) – 批量将工作表拆分为单独文件

Excel vba 实例(3) – 多个工作簿批量合并

Excel vba 实例(4) – 根据已有名称,批量新建表格

Excel vba 实例(5) – 快速合并n多个相同值的单元格

Excel vba 实例(6) – 一键汇总多个sheet数据到总表

Excel vba 实例(7)-一键批量打印工作簿

Excel vba 实例(8)- 利用正则表达式进行定向提取

Excel vba 实例(9)- 批量插入、删除表格中的空行

Excel vba 实例(10)- 统计同一列中出现次数并标注

Excel vba 实例(11)- 拆分单元格并自动填充

Excel vba实例(12)-如何合并多个单元格而不丢失单元格的数据?

Excel vba实例(13) – 自动生成序号、一键排版(列宽、行高自适应等)



欢迎交流!

微信公众号:永恒君的百宝箱

个人博客:www.yhjbox.com

anyShare分享到:

转载请注明:永恒君的百宝箱 » Excel VBA 实例(14) – 依据指定单元格的值,复制并插入相同数量的行

喜欢 (0)
发表我的评论
取消评论
表情