Đây bạn xem code.Xin các sư phụ chỉ giáo ạ.
Thay vì dùng các hàm trong excel, Em muốn làm báo cáo dùng code VBA để hiện giá trị. File mẫu em có đình kèm, mong các sư phụ giúp em ạ.
Em cảm ơn.
Sub baocao()
Dim arr, arr1, dic As Object, i As Long, j As Long, a As Long, lr As Long, dk As String, dks As String
Set dic = CreateObject("scripting.dictionary")
With Sheets("Total_ung_vien")
lr = .Range("A" & Rows.Count).End(xlUp).Row
arr = .Range("A3:B" & lr).Value
For i = 1 To UBound(arr, 1)
dk = arr(i, 1)
dks = arr(i, 1) & "#" & arr(i, 2)
If Not dic.exists(dk) Then
dic.Add dk, 1
Else
dic.Item(dk) = dic.Item(dk) + 1
End If
If Not dic.exists(dks) Then
dic.Add dks, 1
Else
dic.Item(dks) = dic.Item(dks) + 1
End If
Next i
End With
With Sheets("Tuyen_dung")
lr = .Range("A" & Rows.Count).End(xlUp).Row
arr = .Range("A5:d" & lr).Value
For i = 1 To UBound(arr, 1)
dk = arr(i, 1) & "#" & arr(i, 2)
dks = arr(i, 1) & "#" & arr(i, 2) & "#" & arr(i, 3)
If Not dic.exists(dk) Then
dic.Add dk, 1
Else
dic.Item(dk) = dic.Item(dk) + 1
End If
If Not dic.exists(dks) Then
dic.Add dks, 1
Else
dic.Item(dks) = dic.Item(dks) + 1
End If
Next i
End With
With Sheets("BAOCAO")
.Range("B6:G9").ClearContents
arr = .Range("a6:G9").Value
For i = 1 To UBound(arr, 1)
If dic.exists(arr(i, 1)) Then
arr(i, 2) = dic.Item(arr(i, 1))
End If
dk = arr(i, 1) & "#" & "Dat_yeu_cau"
If dic.exists(dk) Then
arr(i, 3) = dic.Item(dk)
End If
arr(i, 4) = arr(i, 3) / arr(i, 2)
dk = arr(i, 1) & "#" & "Pass"
If dic.exists(dk) Then
arr(i, 5) = dic.Item(dk)
End If
dk = arr(i, 1) & "#" & "Pass" & "#" & "Nghi_viec"
If dic.exists(dk) Then
arr(i, 6) = dic.Item(dk)
End If
arr(i, 7) = arr(i, 6) / arr(i, 5)
Next i
.Range("a6:G9").Value = arr
End With
End Sub
Em cảm ơn đại ca rất nhiều :-*Đây bạn xem code.
End Sub[/CODE]Mã:Sub baocao() Dim arr, arr1, dic As Object, i As Long, j As Long, a As Long, lr As Long, dk As String, dks As String Set dic = CreateObject("scripting.dictionary") With Sheets("Total_ung_vien") lr = .Range("A" & Rows.Count).End(xlUp).Row arr = .Range("A3:B" & lr).Value For i = 1 To UBound(arr, 1) dk = arr(i, 1) dks = arr(i, 1) & "#" & arr(i, 2) If Not dic.exists(dk) Then dic.Add dk, 1 Else dic.Item(dk) = dic.Item(dk) + 1 End If If Not dic.exists(dks) Then dic.Add dks, 1 Else dic.Item(dks) = dic.Item(dks) + 1 End If Next i End With With Sheets("Tuyen_dung") lr = .Range("A" & Rows.Count).End(xlUp).Row arr = .Range("A5:d" & lr).Value For i = 1 To UBound(arr, 1) dk = arr(i, 1) & "#" & arr(i, 2) dks = arr(i, 1) & "#" & arr(i, 2) & "#" & arr(i, 3) If Not dic.exists(dk) Then dic.Add dk, 1 Else dic.Item(dk) = dic.Item(dk) + 1 End If If Not dic.exists(dks) Then dic.Add dks, 1 Else dic.Item(dks) = dic.Item(dks) + 1 End If Next i End With With Sheets("BAOCAO") .Range("B6:G9").ClearContents arr = .Range("a6:G9").Value For i = 1 To UBound(arr, 1) If dic.exists(arr(i, 1)) Then arr(i, 2) = dic.Item(arr(i, 1)) End If dk = arr(i, 1) & "#" & "Dat_yeu_cau" If dic.exists(dk) Then arr(i, 3) = dic.Item(dk) End If arr(i, 4) = arr(i, 3) / arr(i, 2) dk = arr(i, 1) & "#" & "Pass" If dic.exists(dk) Then arr(i, 5) = dic.Item(dk) End If dk = arr(i, 1) & "#" & "Pass" & "#" & "Nghi_viec" If dic.exists(dk) Then arr(i, 6) = dic.Item(dk) End If arr(i, 7) = arr(i, 6) / arr(i, 5) Next i .Range("a6:G9").Value = arr End With End Sub
Đây bạn xem code.
End Sub[/CODE]Mã:Sub baocao() Dim arr, arr1, dic As Object, i As Long, j As Long, a As Long, lr As Long, dk As String, dks As String Set dic = CreateObject("scripting.dictionary") With Sheets("Total_ung_vien") lr = .Range("A" & Rows.Count).End(xlUp).Row arr = .Range("A3:B" & lr).Value For i = 1 To UBound(arr, 1) dk = arr(i, 1) dks = arr(i, 1) & "#" & arr(i, 2) If Not dic.exists(dk) Then dic.Add dk, 1 Else dic.Item(dk) = dic.Item(dk) + 1 End If If Not dic.exists(dks) Then dic.Add dks, 1 Else dic.Item(dks) = dic.Item(dks) + 1 End If Next i End With With Sheets("Tuyen_dung") lr = .Range("A" & Rows.Count).End(xlUp).Row arr = .Range("A5:d" & lr).Value For i = 1 To UBound(arr, 1) dk = arr(i, 1) & "#" & arr(i, 2) dks = arr(i, 1) & "#" & arr(i, 2) & "#" & arr(i, 3) If Not dic.exists(dk) Then dic.Add dk, 1 Else dic.Item(dk) = dic.Item(dk) + 1 End If If Not dic.exists(dks) Then dic.Add dks, 1 Else dic.Item(dks) = dic.Item(dks) + 1 End If Next i End With With Sheets("BAOCAO") .Range("B6:G9").ClearContents arr = .Range("a6:G9").Value For i = 1 To UBound(arr, 1) If dic.exists(arr(i, 1)) Then arr(i, 2) = dic.Item(arr(i, 1)) End If dk = arr(i, 1) & "#" & "Dat_yeu_cau" If dic.exists(dk) Then arr(i, 3) = dic.Item(dk) End If arr(i, 4) = arr(i, 3) / arr(i, 2) dk = arr(i, 1) & "#" & "Pass" If dic.exists(dk) Then arr(i, 5) = dic.Item(dk) End If dk = arr(i, 1) & "#" & "Pass" & "#" & "Nghi_viec" If dic.exists(dk) Then arr(i, 6) = dic.Item(dk) End If arr(i, 7) = arr(i, 6) / arr(i, 5) Next i .Range("a6:G9").Value = arr End With End Sub
Đây em xem nhé.