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