Gỏ Mã Công đoạn, dò theo mã hàng lấy tên công đoạn

Liên hệ QC

NguyenthiH

Thành viên mới đăng ký
Tham gia
11/12/16
Bài viết
950
Được thích
175
Giới tính
Nữ
Chào các AC, em lại làm phiền các AC giúp em ah!
Trong File em có tạo Form, và có Các Anh HieuCD, ChanhTQ@.. vv. đã giúp em, nhưng vì có thay đổi(Thêm cột mã công đoạn), mong các Anh giúp em lần nữa.
Trong File Khi em gỏ mã công đoạn trong Tb_MCD, thì sẽ dò theo Mã Hàng và lấy tên công đoạn đập vào Tb_CD.
Em xin ví dụ như sau:
1/em chọn mã hàng là VL2335, gỏ mã công đoạn là 1, thì sẽ lấy tên công đoạn " Ủỉ Ly" đập vào Tb_CD.
2/em chọn mã hàng là Q1M528S0, gỏ mã công đoạn là 1, thì sẽ lấy tên công đoạn "May Túi" đập vào Tb_CD
(Sẽ có trùng mã công đoạn, nhưng khác tên mã hàng)
Nếu gỏ mã công đoạn không có trong mã hàng, thì sẽ có MsgBox báo lỗi. Ví dụ như:
1/Mã hàng VL2335 có mã CD từ 1->7, mà gỏ 8 thì báo lỗi.
2/Mã hàng Q1M528S0 có mã CD từ 1->8, gỏ 9 thì báo lỗi.
Em cũng nhờ các Anh giúp em lọc ra bảng chi tiết công nhân làm gì trong tháng (Sheet!4).(Gỏ tháng vào Sheet4!2 và Tổ vào Sheet4!B2 và Tên công nhân vào Shet4!C2 thì hiện chi tiết của công nhân đó vào bảng chi tiết: sheet4!A5:D.
Em chân thành cám ơn.
 

File đính kèm

  • GPE_Tam (1) (3).xlsb
    40.2 KB · Đọc: 28
HieuCD đã viết:
name là mình nhập tay vào
khi thêm tổ mới phải chỉnh lại name Tocn
name TenCN , khi thêm công nhân mới, hoặc tổ mới, cứ nhập vào dòng ngay phía dưới bảng, quan trọng là phải xếp thứ tự theo tổ. nếu không xếp thì kết quả sẽ sai, lúc đó phải dùng thêm cột phụ và dùng công thức hoặc dùng code VBA để tạo vùng TenCN

Em th
ấy code trong file mới của Anh HieuCD hình như không cần Sort tổ phải không Anh. Vì có khi thêm công nhân mới mà vào tổ 1 em cứ nhập vào dòng dưới cùng của bảng "Danh Sách Công Nhân" và lại quên Sort. Nhưng em thấy code chạy cũng đúng.
Cám ơn Anh HieuCD nhiều nhiều.
 
Upvote 0
Em th[/COLOR]ấy code trong file mới của Anh HieuCD hình như không cần Sort tổ phải không Anh. Vì có khi thêm công nhân mới mà vào tổ 1 em cứ nhập vào dòng dưới cùng của bảng "Danh Sách Công Nhân" và lại quên Sort. Nhưng em thấy code chạy cũng đúng.
Cám ơn Anh HieuCD nhiều nhiều.
các tổ được xếp thứ tự ở cột K ở sheet1, nhập liên tục từ K4 trở xuống, trong list sẽ hiện theo thứ tự nầy. cột K mình tạo bằng cách chọn nguyên vùng danh sách tổ ở cột I, copy và dán vào K4, sau đó vào menu Data chọn nút lệnh Remove Duplicates
còn danh sách công nhân trong list chỉ lấy theo thứ tự xuất hiện từ trên xuống của cột B trong sheet2, mình không xếp thứ tự theo cột H của sheet1, nếu bạn cần thì mình sẽ viết tiếp lệnh xếp thứ tự theo cột H của sheet1
 
Upvote 0
Upvote 0
Em sort trong bảng danh sách công nhân bằng tay thôi cũng được Anh ah!!!
 
Lần chỉnh sửa cuối:
Upvote 0
Cho em hỏi ngoài lề tý, sao em lấy trích dãn thì lại không có dấu "View Post" kế nick trích dẫn vây anh???
mình cũng không biết, khi trả lời thường mình bấm vào lệnh trả lời với trích dẫn thôi, sẽ có các con số sau dấu ; để nhảy tới bài được trả lời
 
Lần chỉnh sửa cuối:
Upvote 0
........................................................
 
Lần chỉnh sửa cuối:
Upvote 0
mình cũng không biết, khi trả lời thường mình bấm vào lệnh trả lời với trích dẫn thôi
Vậy Anh có phải thao tác cắt bỏ bớt không chứ nguyên văn của em là:
Không cần sort theo cột H của sheet1 đâu anh ah! Nếu sort thì sort theo cột I sheet1 là được anh ah. Thôi để em sort bằng tay vậy anh ah.
Cho em hỏi ngoài lề tý, sao em lấy trích dãn bằng cách ["QUOTE=Nick Anh"] và kết thúc["/quote"] thì lại không có dấu "View Post" kế nick trích dẫn vây anh???

 
Lần chỉnh sửa cuối:
Upvote 0
File mới của Anh, em bỏ mấy name TenCN và ToCN cũng chạy code, vậy em delete luôn mấy name đó được không Anh??

Bạn có file hoàn chỉnh chưa cho mình xin tham khảo với, cái Form nhập liệu khi nhập các giá trị xong chưa có nút ghi dữ liệu xuống Sheet thì phải.
 
Upvote 0
bạn dùng code mới trong sheet4, tự cập nhật list của tổ và tên công nhân
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A2:C2")) Is Nothing Then
    If Sheets("Sheet2").Range("B65500").End(xlUp).Row <= 3 Then Exit Sub
    Dim Darr(), Toa(), CN(), Arr(), i As Long, j As Byte, thang As Byte, tocn, tencn As String, tt As Double, tmp As Boolean
    Darr = Sheets("Sheet2").Range("A4:G" & Sheets("Sheet2").Range("A65500").End(xlUp).Row).Value
    ReDim Arr(1 To UBound(Darr), 1 To 4)
    ReDim CN(1 To UBound(Darr))
    thang = Range("A2").Value: tocn = Range("B2").Value: tencn = Range("C2").Value
    'Tao danh sach TO Cong Nhan
    If Not Intersect(Target, Range("A2")) Is Nothing Then
        Set Dic = CreateObject("Scripting.Dictionary")
        For i = 1 To UBound(Darr)
            If Month(Darr(i, 1)) = thang And Not Dic.Exists(Darr(i, 3)) Then Dic.Add Darr(i, 3), ""
        Next i
        Toa = Sheets("Sheet1").Range("K4:K" & Sheets("Sheet1").Range("K65500").End(xlUp).Row).Value
        For i = 1 To UBound(Toa)
            If Dic.Exists(Toa(i, 1)) Then
                k = k + 1:  CN(k) = Toa(i, 1)
                If CN(k) = tocn Then tmp = True
            End If
        Next i
        Set Dic = Nothing
        If tmp = False Then Range("B2") = ""
        If k > 0 Then
            ReDim Preserve CN(1 To k)
            Range("B2").Validation.Delete
            Range("B2").Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
            Operator:=xlBetween, Formula1:=Join(CN, ",")
        End If
        k = 0:  tmp = False
    End If
    'Tao danh sach Ten Cong Nhan
    If Not Intersect(Target, Range("A2:B2")) Is Nothing Then
        Set Dic = CreateObject("Scripting.Dictionary")
        For i = 1 To UBound(Darr)
            If Month(Darr(i, 1)) = thang And Darr(i, 3) = tocn Then
                If Not Dic.Exists(Darr(i, 2)) Then
                    Dic.Add Darr(i, 2), ""
                    k = k + 1:  CN(k) = Darr(i, 2)
                    If CN(k) = tencn Then tmp = True
                End If
            End If
        Next i
        Set Dic = Nothing
        If tmp = False Then Range("C2") = ""
        If k > 0 Then
            ReDim Preserve CN(1 To k)
            Range("C2").Validation.Delete
            Range("C2").Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
            Operator:=xlBetween, Formula1:=Join(CN, ",")
        End If
        k = 0
    End If
    'Cap nhat Chi Tiet Cong Viec
    For i = 1 To UBound(Darr)
        If Month(Darr(i, 1)) = thang And Darr(i, 2) = tencn And Darr(i, 3) = tocn Then
            k = k + 1
            For j = 1 To 4
                Arr(k, j) = Darr(i, j + 3)
            Next j
            tt = tt + Arr(k, 4)
        End If
    Next i
    Sheets("Sheet4").Range("A5:D1000").Clear
    If k > 0 Then
        Sheets("Sheet4").Range("A5").Resize(k, 4) = Arr
        Sheets("Sheet4").Range("C5").Offset(k, 0) = Range("B1") & "ng " & Range("D4")
        Sheets("Sheet4").Range("D5").Offset(k, 0) = tt
        Sheets("Sheet4").Range("A4").Resize(k + 2, 4).Borders.LineStyle = 1
    End If
End If
Erase Darr: Erase Arr: Erase CN: Erase Toa
End Sub

file này phần form nhập liệu vẫn chưa hoàn chỉnh phải không anh HieuCD, chưa có phần ghi dữ liệu xuống sheet, và chỉnh sửa dữ liệu.
 
Upvote 0
Web KT

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

Back
Top Bottom