Làm thể nào để vét cạn nếu cùng 1 từ khóa yêu cầu

Liên hệ QC
Nhờ các anh chị trên diễn đàn giúp đỡ giải giúp tôi bài toán này:

Giả sử tôi có 2 sheet, sheet CN nghỉ và Sheet kiem tra (có file đính kèm)

Yêu cầu của bài toán:
Dựa vào số CMND để cho biết tất cả số thẻ và lý do nghỉ của các lần công nhân nghỉ việc (kết quả giống ở sheet kiem tra)

Tôi dùng hàm Vlookup hoặc Index và Match thì chỉ lấy được giá trị đầu tiên tìm thấy, còn các giá trị sau hàm lại bỏ qua không duyệt.

Có cách nào để "vét" hết tất cả không?

Rất mong các anh chị trên diễn đàn giúp đỡ

Bạn vugialinh thân mến!
Trong Sheet CN Nghĩ để lấy hoặc lựa chọn bất kỳ một dữ liệu cách tốt nhất là sử dụng PivotTable, nó là công cụ có sẳn trong phần mềm Microsoft Office Excel, công cụ PivotTable được Công ty Microsoft dùng macro để viết và tạo ra PivotTable, sử dụng PivotTable có khả năng cập nhật khi bạn thay đổi bất kỳ dữ liệu hoặc thêm cột trong bảng tính.
(để cập nhật dữ liệu bạn click phải vào PivotTable và chọn Refresh Data).
Nếu bạn muốn biết công thức thì bạn hãy gõ dấu bằng (=) vào bất kỳ 01 cell nào trống ở bên ngoài bảng PivotTable và click vào bất kỳ một cell nào trong cột Total để xem công thức (Ví dụ tại cell D9 công thức trong bảng PivotTable của mình gửi là


=GETPIVOTDATA("TT",$A$3,"Bộ phận","Điện")

File đính kèm http://www.4shared.com/document/ojjxyp1Q/test__D_liu_.html
Chúc bạn thực hiện thành công trong công việc.
 
Lần chỉnh sửa cuối:
Mình có ý kiến như sau:
Đoạn code này dùng cho sheets "Cn Nghi". Khi thêm 1 dòng dữ liệu, sẽ tự động kiểm tra xem dữ liệu về số CMND đã có hay chưa, nếu có rồi thì bỏ qua, nếu chưa có thỉ tự thêm vào ở sheet "kiem tra":
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Dim Gt As Variant
Dim kt As Boolean
kt = False
If Target.Column = "2" Then
Gt = Target.Value
For i = 3 To 30000
If Sheets("kiem tra").Cells(i, 2).Value = Gt Then
kt = True
End If
If Sheets("kiem tra").Cells(i, 2).Value = 0 Then Exit For
Next i
If kt = False Then
For i = 3 To 30000
If Sheets("kiem tra").Cells(i, 2).Value = 0 Then
Sheets("kiem tra").Cells(i, 2).Value = Gt
Exit For
End If
Next i
End If
End If
End Sub
-----------
Đoạn code sau giúp lọc các lý do nghỉ của 1 số CMND khi được chọn trong Validation:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer, j As Integer
Dim cmnd As Long
Dim sothe As Integer
Dim lydo(1 To 3000) As String
Application.ScreenUpdating = False
If Target.Address = "$B$3" Then
cmnd = Target.Value
For i = 3 To 30000
If Sheets("CN Nghi").Cells(i, 2).Value = cmnd Then
j = j + 1
sothe = Sheets("CN Nghi").Cells(i, 3).Value
lydo(j) = Sheets("CN Nghi").Cells(i, 6).Value
End If
Next i
Sheets("kiem tra").Range("C3:D65536").ClearContents
Sheets("kiem tra").Cells(3, 3).Value = sothe
For i = 1 To j
Sheets("kiem tra").Cells(i + 2, 4).Value = lydo(i)
Next i
End If
Application.ScreenUpdating = True
End Sub
--------------
File đính kèm: View attachment 69090
 
Web KT

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

Back
Top Bottom