Làm báo cáo bằng VBA

Liên hệ QC

Van Nong

Thành viên mới
Tham gia
10/1/19
Bài viết
6
Được thích
0
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.
 

File đính kèm

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.
Đây bạn xem 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
End Sub[/CODE]
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Đây bạn xem 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
End Sub[/CODE]
Em cảm ơn đại ca rất nhiều :-*
Bài đã được tự động gộp:

Em cảm ơn đại ca rất nhìu :-*
 
Upvote 0
Đây bạn xem 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
End Sub[/CODE]
Bài đã được tự động gộp:

Anh ơi, giúp em cái file này nữa ạ, em làm thử nhưng chưa được, cảm ơn anh
 

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom