Công thức tính số thùng trong Packinglist

banglovetinhyeu

Thành viên mới
Tham gia ngày
22 Tháng hai 2013
Bài viết
3
Được thích
0
Điểm
363
Tuổi
27
Chào mọi người,
Em chưa nghiên cứu về VBA nên sau khi đọcTopic https://www.giaiphapexcel.com/diendan/threads/Đánh-số-tt-thùng-cho-packing-list.33681/ thì không hiểu. Nay em có vấn dề cần các anh chị trên diễn đàn giúp đỡ cong thúc tính số thùng cần mua để về đóng gói sản phẩm

Bên em có 2 kích thước thùng: Thùng lớn và nhỏ

Thùng lớn: Từ size XXS - XXL : Đóng được 55 cái / thùng. Từ size 1X-5X đóng 50 cái/thùng.
Thùng nhỏ: Tất cả các size đóng 22 cái/thùng

1580521286650.png



khách hàng dặt 60 cái size XXS thì sẽ dóng 1 thùng lón 55 cái và 1 thùng nhỏ 5 cái.

Còn nếu khách đạt 60 cái size 4X thì đóng 1 thùng lón 50 cái và 1 thùng nhỏ 10 cái

Khách đặt trong khoảng từ 22-55 cái thì vẫn đóng vào 1 thùng lớn

Em xin cám ơn
 

MNThao

Thành viên mới
Tham gia ngày
16 Tháng mười hai 2009
Bài viết
17
Được thích
6
Điểm
665
Chào mọi người,
Em chưa nghiên cứu về VBA nên sau khi đọcTopic https://www.giaiphapexcel.com/diendan/threads/Đánh-số-tt-thùng-cho-packing-list.33681/ thì không hiểu. Nay em có vấn dề cần các anh chị trên diễn đàn giúp đỡ cong thúc tính số thùng cần mua để về đóng gói sản phẩm

Bên em có 2 kích thước thùng: Thùng lớn và nhỏ

Thùng lớn: Từ size XXS - XXL : Đóng được 55 cái / thùng. Từ size 1X-5X đóng 50 cái/thùng.
Thùng nhỏ: Tất cả các size đóng 22 cái/thùng

View attachment 231528



khách hàng dặt 60 cái size XXS thì sẽ dóng 1 thùng lón 55 cái và 1 thùng nhỏ 5 cái.

Còn nếu khách đạt 60 cái size 4X thì đóng 1 thùng lón 50 cái và 1 thùng nhỏ 10 cái

Khách đặt trong khoảng từ 22-55 cái thì vẫn đóng vào 1 thùng lớn

Em xin cám ơn

Chỉ cần công thức thôi không cần đến code đâu bạn. Bạn xem thử nhé
 

File đính kèm

CHAOQUAY

Thành viên tích cực
Tham gia ngày
24 Tháng tám 2018
Bài viết
1,320
Được thích
1,424
Điểm
360
Chào mọi người,
Em chưa nghiên cứu về VBA nên sau khi đọcTopic https://www.giaiphapexcel.com/diendan/threads/Đánh-số-tt-thùng-cho-packing-list.33681/ thì không hiểu. Nay em có vấn dề cần các anh chị trên diễn đàn giúp đỡ cong thúc tính số thùng cần mua để về đóng gói sản phẩm

Bên em có 2 kích thước thùng: Thùng lớn và nhỏ

Thùng lớn: Từ size XXS - XXL : Đóng được 55 cái / thùng. Từ size 1X-5X đóng 50 cái/thùng.
Thùng nhỏ: Tất cả các size đóng 22 cái/thùng

View attachment 231528



khách hàng dặt 60 cái size XXS thì sẽ dóng 1 thùng lón 55 cái và 1 thùng nhỏ 5 cái.

Còn nếu khách đạt 60 cái size 4X thì đóng 1 thùng lón 50 cái và 1 thùng nhỏ 10 cái

Khách đặt trong khoảng từ 22-55 cái thì vẫn đóng vào 1 thùng lớn

Em xin cám ơn
Bạn gửi file số liệu lên xem sao
 

banglovetinhyeu

Thành viên mới
Tham gia ngày
22 Tháng hai 2013
Bài viết
3
Được thích
0
Điểm
363
Tuổi
27

File đính kèm

ptm0412

Bad Excel Member
Thành viên BQT
Super Moderator
Tham gia ngày
4 Tháng mười một 2007
Bài viết
9,924
Được thích
29,653
Điểm
1,910
Tuổi
58
Nơi ở
Gò Vấp
Cách tính tay của bạn cũng sai dòng 27: còn 24 cái (lớn hơn 22) mà đóng thùng nhỏ

1603077025951.png

Theo tôi thì phải có bảng tra để tính toán như sau:

1603077150972.png

Và bảng tính toán:

1603077226636.png

Có thể kết hợp Power query để tính. Cụ thể là tính Net weight và gross weight

1603077304364.png

Sau đó sắp xếp lại để in ấn theo mẫu của Hải Quan
 

File đính kèm

CHAOQUAY

Thành viên tích cực
Tham gia ngày
24 Tháng tám 2018
Bài viết
1,320
Được thích
1,424
Điểm
360

quanghai1969

Thành viên gạo cội
Tham gia ngày
21 Tháng hai 2009
Bài viết
5,754
Được thích
7,341
Điểm
860
Nơi ở
Thuận An, Bình Dương
Em ví dụ:

Đây là số lượng khách hàng yêu cầu
View attachment 247650

CÒn file đính kèm là form cố định. Em đã làm 1 file nhưng làm tay và rất lâu. Có cách gì nhanh hơn để chia số lượng này kạ
Lần thứ nhất gởi yêu cầu và lặn 2 tuần. Lần thứ 2 gởi yêu cầu và lặn sâu hơn nữa năm.
Mã:
Sub MakeList()
Dim i As Long, j As Long, k As Long, kk As Long, sh As Worksheet
Dim dArr(), sArr(), Res(), Pcs As Long, Qty As Long, Dic As Object, tmp As String, x As Long
Set Dic = CreateObject("scripting.Dictionary")
Set sh = Sheets("Packing_List")
With Sheets("Order_Qty")
   sArr = .Range("A1", .[A65536].End(3)).Resize(, 15).Value
End With
ReDim Res(1 To 10000, 1 To UBound(sArr, 2) + 5)
ReDim dArr(1 To 10000, 1 To UBound(sArr, 2) + 5)
For i = 5 To UBound(sArr)
   For j = 3 To 12
      If IsNumeric(sArr(i, j)) Then
         If sArr(i, j) > 0 Then
            k = k + 1
            Res(k, 4) = sArr(i, 1)
            Res(k, 5) = sArr(i, 2)
            Res(k, j + 3) = sArr(i, j)
         End If
      End If

   Next
Next
sh.[A16].Resize(k, UBound(Res, 2)) = Res
For i = 1 To k
   For j = 6 To 15
      Pcs = sArr(3, j - 3)
      Qty = Res(i, j)
      Do While Qty >= Pcs 'per box
         kk = kk + 1
         dArr(kk, 4) = Res(i, 4) 'style
         dArr(kk, 5) = Res(i, 5) 'color
         dArr(kk, j) = Pcs
         Qty = Qty - Pcs
         If Qty > 0 And Pcs > Qty Then
            kk = kk + 1
            dArr(kk, 4) = Res(i, 4) 'style
            dArr(kk, 5) = Res(i, 5) 'color
            dArr(kk, j) = Qty
         End If
      Loop
   Next
Next
sh.[A16].Resize(10000, UBound(dArr, 2)).ClearContents
sh.[A16].Resize(10000, UBound(dArr, 2)).Interior.ColorIndex = xlNone

k = 0
For i = 1 To kk
   For j = 6 To 15
      If dArr(i, j) > 0 Then
         tmp = dArr(i, 4) & dArr(i, 5) & dArr(i, j) & sArr(2, j - 3)
         tmp = UCase(tmp)
         dArr(i, 16) = dArr(i, j)
         dArr(i, 18) = "=RC[-1]*RC[-2]"
         If Not Dic.exists(tmp) Then
            Dic.Add tmp, i
            dArr(i, 17) = 1
         Else
            x = Dic.item(tmp)
            dArr(x, 17) = dArr(x, 17) + 1
         End If
  
         If dArr(i, 16) > 21 Then
            dArr(i, 20) = "0.59*0.4*0.23"
         Else
            dArr(i, 20) = "0.59*0.4*0.115"
         End If
  
      End If
   Next
Next

For i = 1 To kk
   If dArr(i, 17) > 0 Then
      k = k + 1
      For j = 1 To UBound(dArr, 2)
         dArr(k, j) = dArr(i, j)
      Next
      If i = 1 Then
         dArr(k, 1) = 1
         dArr(k, 3) = dArr(k, 17)
      Else
         dArr(k, 1) = dArr(k - 1, 3) + 1
         dArr(k, 3) = dArr(k, 1) + dArr(k, 17) - 1
      End If
   End If
Next
sh.[A16].Resize(k, UBound(dArr, 2)) = dArr

End Sub
1603093991349.png
 
Top Bottom