Theo dõi theo đơn hàng (3 người xem)

Liên hệ QC

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

NguyenthiH

Thành viên mới đăng ký
Tham gia
11/12/16
Bài viết
965
Được thích
175
Giới tính
Nữ
Chào các anh chị.
Em theo dõi phụ liệu của khách hàng gửi theo đơn hàng, nếu họ gửi từng phụ liệu theo từng đơn hàng thì không sao, nhưng có lúc họ gửi từng phụ liệu cho nhiều đơn hàng, hoặc sử dụng xong còn dư thì họ lại cho sử dụng qua đơn hàng khác.
Các anh chị có thể giúp em theo dõi đơn hàng, nhưng những phụ liệu nào có sử dụng của đơn hàng khác cũng hiện luôn để biết phụ liệu đó đã lấy của đơn hàng nào.
Em có ví dụ trong file ạ.
 

File đính kèm

Chào các anh chị.
Em theo dõi phụ liệu của khách hàng gửi theo đơn hàng, nếu họ gửi từng phụ liệu theo từng đơn hàng thì không sao, nhưng có lúc họ gửi từng phụ liệu cho nhiều đơn hàng, hoặc sử dụng xong còn dư thì họ lại cho sử dụng qua đơn hàng khác.
Các anh chị có thể giúp em theo dõi đơn hàng, nhưng những phụ liệu nào có sử dụng của đơn hàng khác cũng hiện luôn để biết phụ liệu đó đã lấy của đơn hàng nào.
Em có ví dụ trong file ạ.
Thêm 2 cột nhập từ đơn hàng khác: Tên đơn hàng và số lượng
 
ở sheet!chitiet hả anh Hiếu?
 
Ý của em là để nhìn vào là biết luôn đơn hàng này đã lấy keo của đơn hàng khác sữ dụng, chắc không cân cột nhập
Tên Phụ liệuĐvtNhậpXuấtTồnGhi Chú
Keo VKD3261-BlackYds115-115Bongo
Keo VKD3261-Blackyds115-115Grape/Rubin
nhưng nhìn vào vẫn thấy âm của đơn Grape/Rubin
 
Ý của em là để nhìn vào là biết luôn đơn hàng này đã lấy keo của đơn hàng khác sữ dụng, chắc không cân cột nhập
Tên Phụ liệuĐvtNhậpXuấtTồnGhi Chú
Keo VKD3261-BlackYds115-115Bongo
Keo VKD3261-Blackyds115-115Grape/Rubin
nhưng nhìn vào vẫn thấy âm của đơn Grape/Rubin
Cách nầy khá ổn, chỉ cần người dùng hiểu được là tốt
 
em nghĩ có thể thêm cột "xuất đúng đơn hàng" và cột "xuất từ đơn hàng khác".
 
Ý của em là để nhìn vào là biết luôn đơn hàng này đã lấy keo của đơn hàng khác sữ dụng, chắc không cân cột nhập
Tên Phụ liệuĐvtNhậpXuấtTồnGhi Chú
Keo VKD3261-BlackYds115-115Bongo
Keo VKD3261-Blackyds115-115Grape/Rubin
nhưng nhìn vào vẫn thấy âm của đơn Grape/Rubin

em nghĩ có thể thêm cột "xuất đúng đơn hàng" và cột "xuất từ đơn hàng khác".
Tùy ý thích và qui ước trình bày dữ liệu
Ví dụ, nếu có đơn hàng ở cột ghi chú sẽ không trừ trong cột tồn
Còn thêm cột "xuất đúng đơn hàng" và cột "xuất từ đơn hàng khác" sẽ rỏ hơn
 
Em xin đưa file mà anh đã giúp em, mong anh giúp em làn nữa. Theo tiêu chí là ghi đơn hàng khác ở cột ghi chú, và nếu có dơn hàng ở cột ghi chú thì không trừ tồn.
Anh vào sheetCanDoi, gõ "bongo" vào I3 thì code chạy, mong anh chỉnh cho khi những phụ liệu nào lấy của đơn hàng khác thì hiện ra luôn, ở đây là "keo VKD3261-Black" lấy của đơn hàng GRAPE thì kê ra với Stt là 25 (dưới keo xuất đúng đơn hàng. Mong anh Hiếu giúp. Có gì mong anh chỉ giáo.
 

File đính kèm

Em xin đưa file mà anh đã giúp em, mong anh giúp em làn nữa. Theo tiêu chí là ghi đơn hàng khác ở cột ghi chú, và nếu có dơn hàng ở cột ghi chú thì không trừ tồn.
Anh vào sheetCanDoi, gõ "bongo" vào I3 thì code chạy, mong anh chỉnh cho khi những phụ liệu nào lấy của đơn hàng khác thì hiện ra luôn, ở đây là "keo VKD3261-Black" lấy của đơn hàng GRAPE thì kê ra với Stt là 25 (dưới keo xuất đúng đơn hàng. Mong anh Hiếu giúp. Có gì mong anh chỉ giáo.
Chỉnh code
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim Res1(), Res2(), Nhap(), Xuat(), DonHang(), Dic As Object
  Dim i&, k&, ik&, sRow&
  Dim DotHang As String, ikey As String
 
  If Target.Address(0, 0) = "I3" Then
    Application.EnableEvents = False
    Application.ScreenUpdating = False
    eRow = Range("A" & Rows.Count).End(xlUp).Row
    If eRow > 5 Then Range("A6:I" & eRow).Clear
    DotHang = UCase(Target.Value)
    If Len(DotHang) = 0 Then
      Application.ScreenUpdating = True
      Application.EnableEvents = True
      Exit Sub
    End If
    With Sheets("DanhMuc")
      DonHang = .Range("F3:H" & .Range("F" & Rows.Count).End(xlUp).Row).Value
    End With
    sRow = UBound(DonHang)
    For i = 1 To sRow
      If UCase(DonHang(i, 2)) = DotHang Then
        Range("E2") = DonHang(i, 1)
        Range("G2") = DonHang(i, 3)
        Exit For
      End If
    Next i
    
    Set Dic = CreateObject("scripting.dictionary")
    With Sheets("Nhap")
      Nhap = .Range("D3:G" & .Range("D" & Rows.Count).End(xlUp).Row).Value
    End With
    With Sheets("Xuat")
      Xuat = .Range("E3:I" & .Range("E" & Rows.Count).End(xlUp).Row).Value
    End With
    ReDim Res1(1 To UBound(Nhap) + UBound(Xuat), 1 To 2)
    ReDim Res2(1 To UBound(Nhap) + UBound(Xuat), 1 To 4)
    
    sRow = UBound(Nhap)
    For i = 1 To sRow
      If UCase(Nhap(i, 4)) = DotHang Then
        ikey = UCase(Nhap(i, 1))
        If Dic.exists(ikey) = False Then
          k = k + 1
          Dic.Add ikey, k
          Res1(k, 1) = Nhap(i, 1): Res1(k, 2) = Nhap(i, 2)
        End If
        ik = Dic.Item(ikey)
        Res2(ik, 2) = Res2(ik, 2) + Nhap(i, 3)
        Res2(ik, 3) = Res2(ik, 3) + Nhap(i, 3)
      End If
    Next i
    sRow = UBound(Xuat)
    For i = 1 To sRow
      If UCase(Xuat(i, 4)) = DotHang Then
        ikey = UCase(Xuat(i, 1))
        If Dic.exists(ikey) = False Then
          k = k + 1
          Dic.Add ikey, k
          Res1(k, 1) = Xuat(i, 1): Res1(k, 2) = Xuat(i, 2)
        End If
        ik = Dic.Item(ikey)
        Res2(ik, 1) = Res2(ik, 1) + Xuat(i, 3)
        If UCase(Xuat(i, 4)) = UCase(Xuat(i, 5)) Then
          Res2(ik, 3) = Res2(ik, 3) - Xuat(i, 3)
        Else
          Res2(ik, 4) = Res2(ik, 4) & ", " & Xuat(i, 5) & "(-" & Xuat(i, 3) & ")"
        End If
      End If
      
      If UCase(Xuat(i, 4)) <> UCase(Xuat(i, 5)) Then
        If UCase(Xuat(i, 5)) = DotHang Then
          ikey = UCase(Xuat(i, 1))
          If Dic.exists(ikey) = False Then
            k = k + 1
            Dic.Add ikey, k
            Res1(k, 1) = Xuat(i, 1): Res1(k, 2) = Xuat(i, 2)
          End If
          ik = Dic.Item(ikey)
          Res2(ik, 3) = Res2(ik, 3) - Xuat(i, 3)
          Res2(ik, 4) = Res2(ik, 4) & ", " & Xuat(i, 4) & "(+" & Xuat(i, 3) & ")"
        End If
      End If
    Next i
    
    If k Then
      For i = 1 To k
        ikey = Res2(i, 4)
        If Len(ikey) Then Res2(i, 4) = Mid(ikey, 3, Len(ikey) - 2)
      Next i
      Range("B6:C6").Resize(k) = Res1
      Range("F6:I6").Resize(k) = Res2
      Range("A6:I6").Resize(k).Borders.LineStyle = 1
      Range("F6:H6").Resize(k).NumberFormat = "#,##0_);[Red]- #,##0_)"
      Range("B5:I5").Resize(k).Sort [B5], Header:=xlYes
      Range("A6") = 1
      Range("A6").Resize(k).DataSeries
    End If
    Application.ScreenUpdating = True
    Application.EnableEvents = True
  End If
End Sub
 
Cám ơn anh Hiếu nhiều!!
Sao em thấy trong code có Sort rồi mà sao "Keo VKD3261-Black" lại nằm cuối cùng vậy anh?
224061
 
Code Sort không đúng anh Hiếu ơi.
Mã:
 Range("B5:I5").Resize(k).Sort [B5], Header:=xlYes
 
Chào các anh chị trong GPE!
Sau một thời gian nhờ các anh chị trong GPE giúp đỡ, mình đã hoàn thành file "TheodoiDH", nói thật mình chỉ biết sơ sơ code thôi, còn lại toàn bộ code trong file này là của các anh chị trong GPE giúp mình đó. Em Xin Thành Thật cám ơn anh PhucBugi, anh Hiếu, Thầy Batman1, Thầy Ba Tê đã giúp em code trong file này. Vì có bạn hỏi mình đưa file lên để cùng học hỏi, nên hôm nay em xin đưa file lên chia sẽ cùng mọi người. Ai thấy cần thì tải và có thể chỉnh sửa cho phù hợp công việc của mình. Các bạn đừng ngại gì, cứ đưa file lên, và miêu tả thật chính xác những gì các bạn muốn, thì sẽ có các anh chị trong GPE sẽ rất nhiệt tình giúp đỡ.
Trong file:
1/Sheet!DanhMuc, Bảng Danh Muc dùng để nạp danh mục trong Form Nhập. Các bạn đừng nhập trực tiếp vào vào bảng nhé, bắt buộc phải nhập từ Form nhập để dữ liệu thống nhất. Bảng số lượng đơn hàng thì các bạn có thể nhập trực tiếp. Nó sẽ hiện ra ở sheet!CanDoi.

2/Sheet!Nhap: Các bạn nhấn nút "Nhập" sẽ hiện Form Nhập để các bạn nhập liệu, các bạn cứ gõ từ cần tìm vào "Tìm tên phụ liệu" thì phụ liệu sẽ hiện ra ở bảng phụ liệu, nếu phụ liệu nào không có thì vào "Tạo Danh Mục" nhe.

3/Sheet!Xuat: Các bạn nhấn nút "Xuất" sẽ hiện Form Xuất để xuất phụ liệu, khi các bạn chọn đơn hàng trong đơn hàng thì sẽ hiện tất cả phụ liệu của đơn hàng đó trong bảng phụ liệu ->dùng phím xuống để chọn phụ liệu->Enter->đập tên phụ liệu và ĐVT vào tên phụ liệu và ĐVT và hiện số lượng tồn của phụ liệu đó.

4/Sheet!TonCuoi: khi các bạn chọn sheet này thì code chạy và sẽ báo số lượng tồn theo tên phụ liệu.

5/Sheet!CanDoi: khi các bạn gõ đơn hàng vào (I3) thì sẽ hiện tồn cuối của các phụ liệu của đơn hàng đó.

Nếu có gì, xin các bạn cứ góp ý để file càng hoàn thiện hơn.
 

File đính kèm

Web KT

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

Back
Top Bottom