Nhờ giúp lọc những người trong cùng một tổ sản xuất sang sheet khác (1 người xem)

Liên hệ QC

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

gaubong60kg

Thành viên mới
Tham gia
23/4/12
Bài viết
2
Được thích
0
Tôi có danh sách nhân viên thuộc nhiều tổ sản xuất khác nhau. Để thuận tiện cho việc tính lương, tôi cần lọc những người thuộc cùng Tổ sản xuất ra các sheet khác nhau. Mong chỉ giúp
 

File đính kèm

Tôi có danh sách nhân viên thuộc nhiều tổ sản xuất khác nhau. Để thuận tiện cho việc tính lương, tôi cần lọc những người thuộc cùng Tổ sản xuất ra các sheet khác nhau. Mong chỉ giúp
Dùng thử bằng ADO xem nhé.

1.) Chép code sau vào Module:

Mã:
Public cnn As New ADODB.Connection
Sub Moketnoi()
  With cnn
    .ConnectionString = "Provider= Microsoft.Jet.OLEDB.4.0; data source=" & ThisWorkbook.FullName & _
                         ";Extended Properties=Excel 8.0;"
    .CursorLocation = adUseClient
    .Open
  End With
    
End Sub

2.) Tạo 1 Userform1 có các control như sau:

  • Label (Name: Lable1, Caption: Trống)
  • CommandButton (Name: cmdOK, Caption: OK)
  • Combobox (Name: cboTo)

Code trong form sẽ như sau:

Mã:
Private Sub cmdOK_Click()
On Error Resume Next
Dim lsSQL As String, r As Integer
Dim lrs As New ADODB.Recordset
    With Sheet2
        lsSQL = "SELECT STT, HOVATEN, TOCONGTAC, THOIGIANCONGTAC, HESOLUONG, " & _
                "IIf([THOIGIANCONGTAC]>365,500000,0) AS PHUCAP, TIENLUONG+PHUCAP " & _
                "FROM [Sheet1$] " & _
                "Where TOCONGTAC Like '" & IIf(Len(cboTo) = 0, "%", cboTo) & "'"

        lrs.Open lsSQL, cnn, adOpenStatic, adLockReadOnly
        .Range("A4:G6000").ClearContents
        .Range("A4").CopyFromRecordset lrs
        r = .Range("A65000").End(xlUp).Row + 1
        .Range("D" & r) = "T" & ChrW(7893) & "ng C" & ChrW(7897) & "ng"
        .Range("F" & r).FormulaR1C1 = "=SUM(R[-" & r - 4 & "]C:R[-1]C)"
        .Range("G" & r).FormulaR1C1 = "=SUM(R[-" & r - 4 & "]C:R[-1]C)"
        .Range("A1") = IIf(Len(cboTo) = 0, "B" & ChrW(7842) & "NG TÍNH L" & ChrW(431) & ChrW(416) & "NG T" & _
           ChrW(7844) & "T C" & ChrW(7842), "B" & ChrW(7842) & "NG TÍNH L" & ChrW(431) & ChrW(416) & "NG " & cboTo)

    End With
lrs.Close
Set lrs = Nothing
cnn.Close
Set cnn = Nothing
Unload Me
End Sub


Private Sub UserForm_Initialize()
Label1.Caption = "Vui lòng ch" & ChrW(7885) & "n t" & ChrW(7893) & " c" & ChrW(7847) & "n truy v" & ChrW(7845) & "n"
If cnn.State = 1 Then cnn.Close
Moketnoi
    Dim lrs As New ADODB.Recordset
       lsSQL = "select distinct TOCONGTAC from [Sheet1$]"
       lrs.Open lsSQL, cnn, adOpenStatic, adLockReadOnly
       cboTo.Clear
        Do Until lrs.EOF
            cboTo.AddItem lrs![TOCONGTAC]
            lrs.MoveNext
        Loop
   lrs.Close
   Set lrs = Nothing

End Sub

Lưu ý:

  • Bạn phải click chọn References của nó là MS ActiveX Data Objects x.x Library nhé.
  • Phần phụ cấp và tính lương mình chỉ ví dụ, để ứng dụng bạn phải chỉnh sửa lại cho hợp với yêu cầu nhé.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Tôi có danh sách nhân viên thuộc nhiều tổ sản xuất khác nhau. Để thuận tiện cho việc tính lương, tôi cần lọc những người thuộc cùng Tổ sản xuất ra các sheet khác nhau. Mong chỉ giúp
...đừng dùng VBA vì tôi không biết gì về nó cả, không chỉnh sửa được đâu ạ ...
Không dùng VBA mà sao bạn post bài trong box Lập trình với Excel? Híc!
Xem file, chỉ dùng công thức, có thể chỉnh sửa theo ý bạn.
 

File đính kèm

Upvote 0
Cảm ơn các Bác rất nhiều! Tôi có được học Exel ngày nào đâu, vì công việc mới tự lên mạng tìm hiểu thành ra để sử dụng được các hàm căn bản đã vất và lắm rồi. Nhìn các Bác sử dụng hàm mà mãi còn chưa hiểu hết thì nói gì đến VBA. Em post bài vào box này do là new member thấy chỗ này nhiều người hỏi thì mình cũng nhờ giúp đỡ thôi mà. Các Bác thông cảm nhé!
Mà nhân tiện cho em hỏi luôn, để sử dụng được các hàm phức tạp thì em có thể đọc tài liệu nào đạt hiệu quả nhanh nhất, mọi người chỉ giùm em với
 
Upvote 0
Lưu ý:

  • Bạn phải click chọn References của nó là MS ActiveX Data Objects x.x Library nhé.
  • Phần phụ cấp và tính lương mình chỉ ví dụ, để ứng dụng bạn phải chỉnh sửa lại cho hợp với yêu cầu nhé.
Em dùng office 2010 máy em không tìm được MS ActiveX Data Objects x.x Library
 
Upvote 0
Em dùng office 2010 máy em không tìm được MS ActiveX Data Objects x.x Library
Bạn thử chép code sau vào 1 module khác riêng biệt rồi chạy nó, rồi sau đó thử chạy các code khác xem sao nhé.

Mã:
Sub CreateRef_MSAXDO()
Dim ID As Object

On Error Resume Next
Set ID = ThisWorkbook.VBProject.References
ID.AddFromGuid "{00000200-0000-0010-8000-00AA006D2EA4}", 2, 0

End Sub
 
Upvote 0
Web KT

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

Back
Top Bottom