Lập Packing List. (1 người xem)

  • Thread starter Thread starter sealand
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

sealand

Thành viên gạo cội
Tham gia
16/5/08
Bài viết
4,883
Được thích
7,688
Giới tính
Nam
Nghề nghiệp
Kế Toán
Mình có dữ liệu và yêu cầu như file kèm. Nhờ mọi người giúp.
Xin cám ơn.
 

File đính kèm

Mình không hiều cột J của bạn lấy giá trị ở đâu ra.
Bạn thử xe I2= "No"&"."&A3&"-"&D3&":"&E3 sao chép xuống I3..I4 ........Đúng ý bạn chưa
 
Cột j thực chất là số SP trong 1 carton. Khi đóng thùng sẽ lấy lần lượt theo No.
 
Hic, không hiểu quy luật để ra được cột Detail là gì????
 
Hic, không hiểu quy luật để ra được cột Detail là gì????
Muốn đóng gói 1 thùng 24 cái, thì lấy từ trên xuống dưới:
Carton: 24 = 12 của No 001 + 9 của No 002 + 3 của No 003
Vậy No 003 còn 23 - 3 = 20 cho carton 2, lấy thêm 4 của No 004
.
Detail: Chi tiết lần lượt của 12, 9, 3: No + Size + Slượng

tương tự là dòng 2: Chi tiết của 20, 3: No + Size + Slượng.

Bây giờ biết rõ quy luật của Detail rồi, xin mời.
 
Mò mẫm hoài cũng ra rồi đây, chưa được trau chuốt cho lắm!

PHP:
Option Explicit

Sub PackingList()
 Dim jJ As Long, eRw As Long:                         Dim sCTiet As String
 Dim Rng As Range, Clls As Range
 Dim SoLg As Integer, SoCuoi As Integer, Ton As Integer, Thieu As Byte
 
 Range("H2:I" & [g65500].End(xlUp).Row).Clear
 For Each Clls In Range([e2], [e2].End(xlDown))
   If SoLg < 24 Then
      SoLg = SoLg + Clls.Value
      
      If SoLg < 24 Then
         sCTiet = sCTiet & "; No." & Clls.Offset(, -4) &  _
                  "-(" & Clls.Offset(, -1).Value & "):" & Clls.Value
         SoCuoi = SoLg
         If Clls.Row = [e2].End(xlDown).Row Then
            [h65500].End(xlUp).Offset(1).Value = sCTiet & "; Missing:" & (24 - SoLg)
         End If
      ElseIf SoLg >= 24 Then
         Thieu = 24 - SoCuoi
         [h65500].End(xlUp).Offset(1).Value = sCTiet & _
            "; No." & Clls.Offset(, -4) & "-(" & Clls.Offset(, -1).Value & "):" & Thieu
         [I65500].End(xlUp).Offset(1) = 24:                 Ton = Clls.Value - Thieu
         sCTiet = IIf(SoLg = 24, "", "; No." & Clls.Offset(, -4) & _
            "-(" & Clls.Offset(, -1).Value & "):" & Ton)
         SoCuoi = Ton:                                SoLg = Ton
         If Ton > 24 Then
            Do
               [h65500].End(xlUp).Offset(1).Value = _
                  "; No." & Clls.Offset(, -4) & "-(" & Clls.Offset(, -1).Value & "):" & 24
               [I65500].End(xlUp).Offset(1).Value = 24
               Ton = Ton - 24
               If Ton < 24 Then
                  sCTiet = "; No." & Clls.Offset(, -4)  _
                            & "-(" & Clls.Offset(, -1).Value & "):" & Ton
                  SoCuoi = Ton:                       SoLg = Ton
                  Exit Do
               End If
            Loop
   End If:                       End If:              End If
 Next Clls
End Sub

Hai dòng cuối tại sao lại tồn tại chưa rõ lắm?!
 
Thử cái này nữa xem sao. Đúng là vừa làm vừa mò mới ra :-=
PHP:
Sub Packing()
Dim Tong As Integer, STT As Integer, Detail As String
Range("F2:F65536,H2:J65536").ClearContents
Range([E2], [E65536].End(xlUp)).Copy [F2]
MsgBox Detail
STT = 1
Set Rng = [E2]
GPE1:
Tong = Tong + Rng.Value
Detail = Detail & "No." & Rng.Offset(, -4).Text & "-(" & Rng.Offset(, -1) & "): " & Application.WorksheetFunction.Min(24 - Tong + Rng.Value, Rng.Value) & "; "
    If Tong < 24 And Rng.Row < [E65536].End(xlUp).Row Then
    Set Rng = Rng.Offset(1)
    GoTo GPE1
        ElseIf Tong >= 24 Then
        Cells(STT + 1, 9).Value = Left(Detail, Len(Detail) - 2)
        Cells(STT + 1, 8).Value = STT
        Cells(STT + 1, 10).Value = 24
        STT = STT + 1
        Rng.Value = Tong - 24
        Tong = 0
        Detail = ""
        GoTo GPE1
        ElseIf Tong = 0 And Rng.Row = [E65536].End(xlUp).Row Then
        GoTo GPE2
        ElseIf Tong <= 24 And (Rng.Row = [E65536].End(xlUp).Row) Then
        Cells(STT + 1, 9).Value = Detail & "Missing: " & (24 - Tong)
        Cells(STT + 1, 8).Value = STT
        Cells(STT + 1, 10).Value = Tong
    End If
GPE2:
Range([F2], [F65536].End(xlUp)).Copy [E2]
[F:F].ClearContents
End Sub
 
Lần chỉnh sửa cuối:
Thành thật xin lỗi các bạn. Mình diễn giải không được cụ thể lắm.
Nói thật, đây là yêu cầu của con trai nhờ về lập list đóng gói tại 1 công ty may. Tưởng đơn giản nhưng mình loay hoay chưa tìm được phương án phù hợp. Vùng số liệu là dữ liệu báo cáo của các tổ may báo lên (Đánh theo No.)
Đóng gói lần lượt 24 áo/Carton. Các số liệu trong detail sẽ được báo cáo cụ thể như bảng kê và làm cơ sở cho tổ đóng gói nhập thùng.
Rất cám ơn các bạn đã giúp đỡ, mình chưa kịp Test nhưng cũng xin cám ơn các bạn.
Thân Sealand.
 
Code của Bác Sa và HuuThang đều cho kết quả tốt. Nhưng Code của Bác Sa khi chạy nó không xóa dự liệu mà chép nối xuống phía dưới và xóa mất dòng tiêu đề.
 
Code của Bác Sa và HuuThang đều cho kết quả tốt. Nhưng Code của Bác Sa khi chạy nó không xóa dự liệu mà chép nối xuống phía dưới và xóa mất dòng tiêu đề.

À, do mình thấy 2 cột trống, nên xóa 1 cột rồi!

Bạn thử xóa 1 cột F hay G xem sao?!

Chỉ có điều đầu dòng còn sai chính tả, nhưng chuyện này bạn thừa sức giải quyết mà!

Thử lại xem sao & vui ngày sinh nhật nha! --=0 :-= --=0
 
Xin cám ơn Bác Sa_DQ và HuuThang nhé, thằng nhỏ mừng lắm khi thấy Code của Bác và Chú thay nó làm cả buổi. Giờ thì để an toàn nó chỉ chạy rồi soát qua kết quả.
 
To HuuThang_BD (Bình định hay Bình dương không biết nữa?)

E rằng chúng ta còn phải tiếp tục với đứa con tinh thần của mình:

Khi các ô từ E2:E5 nhận các trị {12,12,48,0} thì còn sai kết quả đó! Nhưng của mỗi người sai 1 vẻ khác nhau!

Chúc thêm lần nữa 'Đất cảng" sinh nhật vui vẻ!

Nhai.jpg
Nhai.jpg
Nhai.jpg
Valentine0.jpg
Nhai.jpg
Nhai.jpg
Nhai.jpg
 
E rằng chúng ta còn phải tiếp tục với đứa con tinh thần của mình:

Khi các ô từ E2:E5 nhận các trị {12,12,48,0} thì còn sai kết quả đó! Nhưng của mỗi người sai 1 vẻ khác nhau!
Đã text trường hợp này nhưng không thấy sai?! Bác kiểm tra lại xem.

Code thừa dòng:
MsgBox Detail
Do lúc text quên xóa.
 
xin lỗi cho e hỏi ngu tí, các bác viết chương trình này chạy trên phần mền gì vậy. em cũng đang tập làm PKL, nhưng sao nó phức tạp quá, em mon tìm một công cụ hỗ trợ tốt hơn excel. Thanks các bác
 
Web KT

Bài viết mới nhất

Back
Top Bottom