Lọc dữ liệu cho form theo điều kiện. (1 người xem)

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

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

ledoanvu

Thành viên mới
Tham gia
20/10/08
Bài viết
26
Được thích
8
Mình có làm 1 file để các bạn dưới hiện trường nhập dữ liệu sản xuất. File đính kèm.
Có 31 sheet chia cho 31 ngày. Nguyên liệu tồn cuối tháng trước và nhập về tháng này nằm trong sheet list.
Nhân viên nhập dữ liệu ở những ô màu vàng của các sheet từ 1 đến 31 tương đương. Mỗi ngày có tối đa 10 lần xuất nguyên liệu.
Có 2 điều mình muốn nhờ mọi người giúp.
1.Mình muốn ở cột Invoice của mỗi sheet ngày khi click Use form chỉ hiện những invoice mà tương đương với cột M-Code.
Ví dụ : Cột E M-Code là IG011000 thì khi click vào cột H form hiện ra. Chỉ những invoice của code IG011000 thì mới có trong list box
2. Mình muốn tổng lượng sử dụng cột K using của List bằng Sum của cột I của mỗi Sheet theo từng invoice.
 

File đính kèm

Mình mở file ra thấy báo lỗi tại dòng có đánh số trong macro này:
PHP:
Private Sub UserForm_Activate()
TextBox1.Value = ""
ListBox1.Clear
With ActiveCell
4    If .Column = 8 Then dl = Sheets("list").Range("A2:A" & Sheets("list").[A65536].End(xlUp).Row)
    If .Column = 16 Then dl = Sheets("list").Range("B2:B" & Sheets("list").[B65536].End(xlUp).Row)
    If .Column = 17 Then dl = Sheets("list").Range("C2:C" & Sheets("list").[C65536].End(xlUp).Row)
End With
For i = 1 To UBound(dl)
   If dl(i, 1) <> "" Then
        With ListBox1
            .AddItem dl(i, 1)
            .List(.ListCount - 1, 1) = dl(i, 1)
        End With
   End If
Next
Erase dl
End Sub
 
Upvote 0
Mình có làm 1 file để các bạn dưới hiện trường nhập dữ liệu sản xuất. File đính kèm.
Có 31 sheet chia cho 31 ngày. Nguyên liệu tồn cuối tháng trước và nhập về tháng này nằm trong sheet list.
Nhân viên nhập dữ liệu ở những ô màu vàng của các sheet từ 1 đến 31 tương đương. Mỗi ngày có tối đa 10 lần xuất nguyên liệu.
Có 2 điều mình muốn nhờ mọi người giúp.
1.Mình muốn ở cột Invoice của mỗi sheet ngày khi click Use form chỉ hiện những invoice mà tương đương với cột M-Code.
Ví dụ : Cột E M-Code là IG011000 thì khi click vào cột H form hiện ra. Chỉ những invoice của code IG011000 thì mới có trong list box
2. Mình muốn tổng lượng sử dụng cột K using của List bằng Sum của cột I của mỗi Sheet theo từng invoice.
Tôi giúp được ý 1 còn ý 2 nhờ anh em khác vậy.
Bạn sửa code cho Private Sub UserForm_Activate() như sau:
Mã:
Private Sub UserForm_Activate()
Dim CodeDk As String, cot As Integer
TextBox1.Value = ""
ListBox1.Clear
With ActiveCell
If (.Column = 8) Or (.Column = 16) Or (.Column = 17) Then dl = Sheets("list").Range("A2:D" & Sheets("list").[A65536].End(xlUp).Row)
If .Column = 8 Then
    CodeDk = .Offset(, -3).Value
    cot = 1
ElseIf .Column = 16 Then
    CodeDk = .Offset(, -11).Value
    cot = 2
ElseIf .Column = 17 Then
    CodeDk = .Offset(, -12).Value
    cot = 3
End If

End With
For i = 1 To UBound(dl)
   If (dl(i, cot) <> "") And (dl(i, 4) = CodeDk) Then
        With ListBox1
            .AddItem dl(i, cot)
            .List(.ListCount - 1, 1) = dl(i, cot)
        End With
   End If
Next
Erase dl
End Sub
 
Upvote 0
Tôi giúp được ý 1 còn ý 2 nhờ anh em khác vậy.
Cảm ơn giải pháp nhiều mình đã thay đổi code của bạn chạy được rồi.
Mình cũng đã đổi cấu trúc file không nhập theo ngày mà nhập theo số lot sản xuất (CH) liên tục không chia theo ngày nữa.
Quản lý dữ liệu thì dễ hơn tồn kho cuối cũng sum được rồi, mỗi tội dưới hiện trường thì vẫn thích nhập kiểu cũ hơn.

-Bạn có thể giúp mình làm thêm cột G khi click vào ô đó list box hiện lên là cột Q (M-Code master ) của sheet List.
File đính kèm.
Bài đã được tự động gộp:

Mình mở file ra thấy báo lỗi tại dòng có đánh số trong macro này:
PHP:
Private Sub UserForm_Activate()
TextBox1.Value = ""
ListBox1.Clear
With ActiveCell
4    If .Column = 8 Then dl = Sheets("list").Range("A2:A" & Sheets("list").[A65536].End(xlUp).Row)
    If .Column = 16 Then dl = Sheets("list").Range("B2:B" & Sheets("list").[B65536].End(xlUp).Row)
    If .Column = 17 Then dl = Sheets("list").Range("C2:C" & Sheets("list").[C65536].End(xlUp).Row)
End With
For i = 1 To UBound(dl)
   If dl(i, 1) <> "" Then
        With ListBox1
            .AddItem dl(i, 1)
            .List(.ListCount - 1, 1) = dl(i, 1)
        End With
   End If
Next
Erase dl
End Sub
Em đã sửa lại rồi ạ. Vì cái này copy của các bác trên GPE em thì chcuwa hiểu nhiều về code nên vậy
 

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom