Excel精英培训网

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

[已解决]按不同产品数量快速拆分指定数量的装箱单(分配箱子)

[复制链接]
发表于 2021-5-23 08:34 | 显示全部楼层 |阅读模式
3学分
本帖最后由 18658662113 于 2021-5-23 08:36 编辑

一个箱子能装60片有的时候要改50  40都有  这个是变量不要固定
数量30=意思就是30片L 30片R    左右眼都要的
最佳答案
2021-5-23 08:34
但愿能帮到你!

Sub 优先同产品()
    Call wanao2008(True)
End Sub
Sub 直接按顺序()
    Call wanao2008(False)
End Sub
Sub wanao2008(xlNum As Boolean)
    Dim x As Integer, pNum As Integer, arr, xNum As Integer, hjNum As Integer
    Dim xhStr As String  
    Sheet2.Activate
    If [g2] = "" Then MsgBox "请输入每箱的片数": Range("G2").Select: Exit Sub
    pNum = [g2]
    Range("E2:F14").ClearContents
    arr = Sheet2.UsedRange
    If xlNum Then
        For x = 2 To UBound(arr)
            Do
                If arr(x, 4) >= pNum Then
                    xNum = xNum + 1
                    If Cells(x, 5) <> "" Then
                        Cells(x, 5) = Cells(x, 5) & "," & xNum & "(" & Cells(x, 1) & "-" & pNum & ")"
                    Else
                        Cells(x, 5) = Cells(x, 5) & xNum & "(" & Cells(x, 1) & "-" & pNum & ")"
                    End If
                    arr(x, 4) = arr(x, 4) - pNum
                Else
                    Exit Do
                End If
            Loop
        Next
    End If
    For x = 2 To UBound(arr)
        Do
            If hjNum + arr(x, 4) >= pNum Then
                xNum = xNum + 1
                xhStr = xhStr & Cells(x, 1) & "-" & pNum - hjNum
                arr(x, 4) = arr(x, 4) - (pNum - hjNum)
                If Cells(x, 5) = "" Then
                    Cells(x, 5) = Cells(x, 5) & xNum & "(" & xhStr & ")"
                Else
                    Cells(x, 5) = Cells(x, 5) & "," & xNum & "(" & xhStr & ")"
                End If
                hjNum = 0
                xhStr = ""
            Else
                If arr(x, 4) <> 0 Then
                    hjNum = hjNum + arr(x, 4)
                    xhStr = xhStr & Cells(x, 1) & "-" & arr(x, 4) & ","
                End If
                Exit Do
            End If
        Loop
    Next
    If xhStr <> "" Then
        xNum = xNum + 1
        Mid(xhStr, Len(xhStr), 1) = ")"
        Cells(x - 1, 5) = Cells(x - 1, 5) & xNum & "(" & xhStr
    End If
    'Stop
End Sub


QQ图片20210523082618.png

需要的本文件.zip

12.68 KB, 下载次数: 9

这是本文需要的

分组编箱号2.zip

14.16 KB, 下载次数: 4

这是别人做的

最佳答案

查看完整内容

但愿能帮到你! Sub 优先同产品() Call wanao2008(True) End Sub Sub 直接按顺序() Call wanao2008(False) End Sub Sub wanao2008(xlNum As Boolean) Dim x As Integer, pNum As Integer, arr, xNum As Integer, hjNum As Integer Dim xhStr As String Sheet2.Activate If [g2] = "" Then MsgBox "请输入每箱的片数": Range("G2").Select: Exit Sub pNum = [g2] Range("E2:F14") ...
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2021-5-23 08:34 | 显示全部楼层    本楼为最佳答案   
但愿能帮到你!

Sub 优先同产品()
    Call wanao2008(True)
End Sub
Sub 直接按顺序()
    Call wanao2008(False)
End Sub
Sub wanao2008(xlNum As Boolean)
    Dim x As Integer, pNum As Integer, arr, xNum As Integer, hjNum As Integer
    Dim xhStr As String  
    Sheet2.Activate
    If [g2] = "" Then MsgBox "请输入每箱的片数": Range("G2").Select: Exit Sub
    pNum = [g2]
    Range("E2:F14").ClearContents
    arr = Sheet2.UsedRange
    If xlNum Then
        For x = 2 To UBound(arr)
            Do
                If arr(x, 4) >= pNum Then
                    xNum = xNum + 1
                    If Cells(x, 5) <> "" Then
                        Cells(x, 5) = Cells(x, 5) & "," & xNum & "(" & Cells(x, 1) & "-" & pNum & ")"
                    Else
                        Cells(x, 5) = Cells(x, 5) & xNum & "(" & Cells(x, 1) & "-" & pNum & ")"
                    End If
                    arr(x, 4) = arr(x, 4) - pNum
                Else
                    Exit Do
                End If
            Loop
        Next
    End If
    For x = 2 To UBound(arr)
        Do
            If hjNum + arr(x, 4) >= pNum Then
                xNum = xNum + 1
                xhStr = xhStr & Cells(x, 1) & "-" & pNum - hjNum
                arr(x, 4) = arr(x, 4) - (pNum - hjNum)
                If Cells(x, 5) = "" Then
                    Cells(x, 5) = Cells(x, 5) & xNum & "(" & xhStr & ")"
                Else
                    Cells(x, 5) = Cells(x, 5) & "," & xNum & "(" & xhStr & ")"
                End If
                hjNum = 0
                xhStr = ""
            Else
                If arr(x, 4) <> 0 Then
                    hjNum = hjNum + arr(x, 4)
                    xhStr = xhStr & Cells(x, 1) & "-" & arr(x, 4) & ","
                End If
                Exit Do
            End If
        Loop
    Next
    If xhStr <> "" Then
        xNum = xNum + 1
        Mid(xhStr, Len(xhStr), 1) = ")"
        Cells(x - 1, 5) = Cells(x - 1, 5) & xNum & "(" & xhStr
    End If
    'Stop
End Sub


回复

使用道具 举报

 楼主| 发表于 2021-5-23 08:39 | 显示全部楼层
嫩解决的好  有能力的  可以加好友 以后有需求 定做更高级的页面  可以付报酬
回复

使用道具 举报

发表于 2021-5-23 20:54 | 显示全部楼层
1、优先同产品
分箱.PNG
2、直接按顺序
按顺序.PNG

我是这样分箱的,感觉很清晰,根本没必要再加说明了。



回复

使用道具 举报

 楼主| 发表于 2021-5-24 09:52 | 显示全部楼层
wanao2008 发表于 2021-5-23 20:54
1、优先同产品

2、直接按顺序

说明可以不要  但是分配错了   10(A-5)   应该放在A那一行的 不能放在C

回复

使用道具 举报

 楼主| 发表于 2021-5-24 10:09 | 显示全部楼层
这样也可以把  您发一个              然后最好还是改下  改为产品A的都放在A那篮子   B都放B那栏    2中版本都发下    我问问他们喜欢哪种
回复

使用道具 举报

发表于 2021-5-24 19:34 | 显示全部楼层
18658662113 发表于 2021-5-24 10:09
这样也可以把  您发一个              然后最好还是改下  改为产品A的都放在A那篮子   B都放B那栏    2中版 ...

首先,我觉得我这样放清晰明了!如果非要分开放,感觉非常乱。






回复

使用道具 举报

 楼主| 发表于 2021-5-25 09:09 | 显示全部楼层
wanao2008 发表于 2021-5-24 19:34
首先,我觉得我这样放清晰明了!如果非要分开放,感觉非常乱。

好的   我看了下   这样也是不错的    有Q吗  加一个           这个只能对单镜片使用   实际上面的是LR  左右眼  2个镜片的
回复

使用道具 举报

发表于 2021-5-25 19:49 | 显示全部楼层
18658662113 发表于 2021-5-25 09:09
好的   我看了下   这样也是不错的    有Q吗  加一个           这个只能对单镜片使用   实际上面的是LR  ...

分L、R有难度,另请高明!
回复

使用道具 举报

 楼主| 发表于 2021-5-28 09:36 | 显示全部楼层
wanao2008 发表于 2021-5-25 19:49
分L、R有难度,另请高明!

谢谢!   你上面那个做好的发一下
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-15 23:37 , Processed in 0.331641 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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