"Giúp Lọc mã ID theo điều kiện cột

Liên hệ QC

kdhiaenuh

Thành viên mới
Tham gia
20/6/16
Bài viết
9
Được thích
0
Em có 1 file tập tin 2 tờ
Sheet 1 là tổng hợp danh sách nhân lực, Sheet 2 là file làm việc của em.Ở sheet làm việc, ý định của em là gõ ID nhân viên, sau đó chọn thông tin dữ liệu cần lấy ở trên tiêu đề cột. Lúc đó VBA sẽ load giúp em ạ.
Dưới đây là đoạn code của em mà nó ko chạy được. Em mới tập tọe học mong các anh chị bớt gạch đá và chỉ bảo giúp ạ.

Sub lam_viec1()

'Tim dong chua id cuoi cung
Sheets("Danh_sach").Select
Dim Dong_Cuoi_DS As Long
Dim Cot_Cuoi_DS As Integer
Dong_Cuoi_DS = Sheet1.Cells(Sheet1.Rows.Count, 2).End(xlUp).Row 'Dong cuoi cot b sheet danh sach
Cot_Cuoi_DS = Sheet1.Cells(1, Sheet1.Columns.Count).End(xlToLeft).Column

Sheets("Lam_Viec").Select
Dim Dong_Cuoi_LV As Long
Dim Cot_Cuoi_LV As Integer
Dong_Cuoi_LV = Sheet2.Cells(Sheet2.Rows.Count, 2).End(xlUp).Row 'Dong cuoi cot b
Cot_Cuoi_LV = Sheet2.Cells(6, Sheet2.Columns.Count).End(xlToLeft).Column


MsgBox Cot_Cuoi_LV & " - " & Cot_Cuoi_DS & " - " & Dong_Cuoi_LV & " - " & Dong_Cuoi_DS




Sheets("Lam_Viec").Select
Dim CLV As Integer
Dim DLV As Integer
Sheets("Danh_Sach").Select
Dim CDS As Integer
Dim DDS As Integer

For CLV = 1 To Cot_Cuoi_LV
For CDS = 1 To Cot_Cuoi_DS
Sheets("Lam_Viec").Select
tieude = Sheet2.Cells(6, CLV).Value
Sheets("Danh_Sach").Select
If Sheet1.Cells(1, CDS) = tieude Then

For DLV = 6 To Dong_Cuoi_LV

For DDS = 1 To Dong_Cuoi_DS
Sheets("Lam_Viec").Select
ID = Sheet2.Cells(DLV, 2).Value
Sheets("Danh_Sach").Select
If Sheet1.Cells(DDS, 1) = ID Then
dulieu = Sheet1.Cells(DDS, CDS).Value
Sheets("Lam_Viec").Select
Sheet2.Cells(DLV, CLV) = dulieu
Next DDS

Next DLV
Next CDS
Next CLV

End Sub
 

File đính kèm

Em có 1 file tập tin 2 tờ
Sheet 1 là tổng hợp danh sách nhân lực, Sheet 2 là file làm việc của em.Ở sheet làm việc, ý định của em là gõ ID nhân viên, sau đó chọn thông tin dữ liệu cần lấy ở trên tiêu đề cột. Lúc đó VBA sẽ load giúp em ạ.
Dưới đây là đoạn code của em mà nó ko chạy được. Em mới tập tọe học mong các anh chị bớt gạch đá và chỉ bảo giúp ạ.

Sub lam_viec1()
...................................
End Sub
Tiêu đề bài viết không rõ ràng và không phù hợp với nội dung, bạn nên sửa Tiêu đề bài viết lại là "Giúp Lọc mã ID theo điều kiện cột".
 
Upvote 0
Em có 1 file tập tin 2 tờ
Sheet 1 là tổng hợp danh sách nhân lực, Sheet 2 là file làm việc của em.Ở sheet làm việc, ý định của em là gõ ID nhân viên, sau đó chọn thông tin dữ liệu cần lấy ở trên tiêu đề cột. Lúc đó VBA sẽ load giúp em ạ.
Dưới đây là đoạn code của em mà nó ko chạy được. Em mới tập tọe học mong các anh chị bớt gạch đá và chỉ bảo giúp ạ.

Sub lam_viec1()

'Tim dong chua id cuoi cung
Sheets("Danh_sach").Select
Dim Dong_Cuoi_DS As Long
Dim Cot_Cuoi_DS As Integer
Dong_Cuoi_DS = Sheet1.Cells(Sheet1.Rows.Count, 2).End(xlUp).Row 'Dong cuoi cot b sheet danh sach
Cot_Cuoi_DS = Sheet1.Cells(1, Sheet1.Columns.Count).End(xlToLeft).Column

Sheets("Lam_Viec").Select
Dim Dong_Cuoi_LV As Long
Dim Cot_Cuoi_LV As Integer
Dong_Cuoi_LV = Sheet2.Cells(Sheet2.Rows.Count, 2).End(xlUp).Row 'Dong cuoi cot b
Cot_Cuoi_LV = Sheet2.Cells(6, Sheet2.Columns.Count).End(xlToLeft).Column


MsgBox Cot_Cuoi_LV & " - " & Cot_Cuoi_DS & " - " & Dong_Cuoi_LV & " - " & Dong_Cuoi_DS




Sheets("Lam_Viec").Select
Dim CLV As Integer
Dim DLV As Integer
Sheets("Danh_Sach").Select
Dim CDS As Integer
Dim DDS As Integer

For CLV = 1 To Cot_Cuoi_LV
For CDS = 1 To Cot_Cuoi_DS
Sheets("Lam_Viec").Select
tieude = Sheet2.Cells(6, CLV).Value
Sheets("Danh_Sach").Select
If Sheet1.Cells(1, CDS) = tieude Then

For DLV = 6 To Dong_Cuoi_LV

For DDS = 1 To Dong_Cuoi_DS
Sheets("Lam_Viec").Select
ID = Sheet2.Cells(DLV, 2).Value
Sheets("Danh_Sach").Select
If Sheet1.Cells(DDS, 1) = ID Then
dulieu = Sheet1.Cells(DDS, CDS).Value
Sheets("Lam_Viec").Select
Sheet2.Cells(DLV, CLV) = dulieu
Next DDS

Next DLV
Next CDS
Next CLV

End Sub
Bạn thử code này xem nhé.
Mã:
Sub laydulieu()
    Dim arr, i As Long, kq, dic As Object, j As Long, b As Long, lr As Long, dk As String, T(2 To 11)
    Set dic = CreateObject("scripting.dictionary")
    With Sheets("danh_sach")
         lr = .Range("A" & Rows.Count).End(xlUp).Row
         If lr < 2 Then Exit Sub
         arr = .Range("A1:H" & lr).Value
    End With
        For i = 2 To UBound(arr, 2)
            dk = UCase(arr(1, i))
            dic.Item(dk) = i
        Next i
        For i = 2 To UBound(arr)
            dk = UCase(arr(i, 1))
            dic.Item(dk) = i
        Next i
    With Sheets("lam_viec")
         lr = .Range("B" & Rows.Count).End(xlUp).Row
         If lr < 7 Then Exit Sub
         .Range("C7:L" & lr).ClearContents
         kq = .Range("B6:L" & lr).Value
         For i = 2 To 11
             dk = UCase(kq(1, i))
             If Len(dk) Then
                b = dic.Item(dk)
                If b Then
                   T(i) = b
                End If
             End If
         Next i
         For i = 2 To UBound(kq)
             dk = UCase(kq(i, 1))
             b = dic.Item(dk)
             If b Then
                For j = 2 To 11
                    If T(j) Then
                       kq(i, j) = arr(b, T(j))
                    End If
                Next j
             End If
        Next i
       .Range("B6:L" & lr).Value = kq
   End With
End Sub
 
Upvote 0
Tiêu đề bài viết không rõ ràng và không phù hợp với nội dung, bạn nên sửa Tiêu đề bài viết lại là "Giúp Lọc mã ID theo điều kiện cột".
Vâng anh. Lần đầu em đăng bài. Xin rút kinh nghiệm ạ
Bài đã được tự động gộp:

Bạn thử code này xem nhé.
Mã:
Sub laydulieu()
    Dim arr, i As Long, kq, dic As Object, j As Long, b As Long, lr As Long, dk As String, T(2 To 11)
    Set dic = CreateObject("scripting.dictionary")
    With Sheets("danh_sach")
         lr = .Range("A" & Rows.Count).End(xlUp).Row
         If lr < 2 Then Exit Sub
         arr = .Range("A1:H" & lr).Value
    End With
        For i = 2 To UBound(arr, 2)
            dk = UCase(arr(1, i))
            dic.Item(dk) = i
        Next i
        For i = 2 To UBound(arr)
            dk = UCase(arr(i, 1))
            dic.Item(dk) = i
        Next i
    With Sheets("lam_viec")
         lr = .Range("B" & Rows.Count).End(xlUp).Row
         If lr < 7 Then Exit Sub
         .Range("C7:L" & lr).ClearContents
         kq = .Range("B6:L" & lr).Value
         For i = 2 To 11
             dk = UCase(kq(1, i))
             If Len(dk) Then
                b = dic.Item(dk)
                If b Then
                   T(i) = b
                End If
             End If
         Next i
         For i = 2 To UBound(kq)
             dk = UCase(kq(i, 1))
             b = dic.Item(dk)
             If b Then
                For j = 2 To 11
                    If T(j) Then
                       kq(i, j) = arr(b, T(j))
                    End If
                Next j
             End If
        Next i
       .Range("B6:L" & lr).Value = kq
   End With
End Sub
Em cảm ơn anh chị. Code chạy được rồi ạ
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom