Tách sheet dựa vào validation theo từng nhân viên và thống kê báo cáo kết quả

huonglien1901

GPE là ngôi nhà thứ 2 của tôi!!!
Tham gia ngày
17 Tháng tư 2016
Bài viết
2,136
Được thích
1,682
Điểm
360
Tuổi
27
Chào mọi người!

Em có vấn đề nhờ mọi người hỗ trợ.

Em muốn tách sheet dựa vào Validation theo từng nhân viên., Cột H1 có chứa Validation.

Validation này chứa tất cả các nhân viên,

Khi chọn 01 nhân viên thì tách sheet dựa vào nhân viên đó.

Chọn tất cả thì tách tất cả các nhân viên.

Sheet TONGHOP tổng hợp tất cả các nhân viên đi trong 01 tháng bao nhiêu KM.

Em cảm ơn mọi người nhiều!
 

File đính kèm

ducdoom

Thành viên chính thức
Tham gia ngày
24 Tháng mười hai 2018
Bài viết
59
Được thích
48
Điểm
20
Tuổi
24
bạn có thể demo 1 sheet chứa kết quả mong muốn thì sẽ dễ hơn cho mọi người đọc và giúp bạn đó!
 

ducdoom

Thành viên chính thức
Tham gia ngày
24 Tháng mười hai 2018
Bài viết
59
Được thích
48
Điểm
20
Tuổi
24
Mình giúp bạn code phần Tách sheet, bạn thử xem sao
Mã:
Option Explicit

Sub TachSheet()

Dim wb As Workbook
Set wb = Application.ThisWorkbook
Dim wsData As Worksheet
Set wsData = wb.Worksheets("Data")

Dim tenNV As String
tenNV = wsData.Range("H1").Value2

Dim LR As Long, i As Long
LR = wsData.Range("I" & wsData.Rows.Count).End(xlUp).Row
Dim arrTenNV As Variant
arrTenNV = wsData.Range("I6", "I" & LR).Value2

Dim TatCa As String
TatCa = wsData.Range("I5").Value2

If tenNV <> TatCa Then
    Call CCopySheet(wsData, tenNV)
ElseIf tenNV = TatCa Then
    For i = 1 To UBound(arrTenNV)
        tenNV = arrTenNV(i, 1)
        wsData.Range("H1").Value2 = tenNV
        Call CCopySheet(wsData, tenNV)
    Next
End If

End Sub


----------------------------------------------------------
Sub CCopySheet(sh As Worksheet, sheetName As String)

Dim newSheet As Worksheet
Dim xSheet As Worksheet

For Each xSheet In ThisWorkbook.Worksheets
    If xSheet.Name = sheetName Then
        Application.DisplayAlerts = False
        xSheet.Delete
        Application.DisplayAlerts = True
    End If
Next

sh.Copy after:=Worksheets(Worksheets.Count)
Set newSheet = ThisWorkbook.ActiveSheet
newSheet.Name = sheetName

End Sub
 
Top Bottom