Đếm số ngày thứ 7 và chủ nhật trong 1 khoảng thời gian

Liên hệ QC
Tuyệt vời, xin cảm ơn anh nhiều, em loay hoay thử mãi mà không được.
cảm ơn các anh , đọc tới đây chắc là bài của em đã được giải quyết rồi phải không ạ, nhưng do em không hiểu về VBA nên không thể ghép đoạn code trên vào file của em, nhờ các anh làm giúp em file hoàn chỉnh nhé.
 
cảm ơn các anh , đọc tới đây chắc là bài của em đã được giải quyết rồi phải không ạ, nhưng do em không hiểu về VBA nên không thể ghép đoạn code trên vào file của em, nhờ các anh làm giúp em file hoàn chỉnh nhé.
Của bạn đây. . .
 

File đính kèm

Cảm ơn bạn rất nhiều
Thử code sau:

PHP:
Public Function T7CN(ByVal ID As String, ByVal rngID As Range, ByVal rngDate As Range) As Long
Dim arrID As Variant, arrDate As Variant
Dim Dic As Object
Dim i&, j&
Set Dic = CreateObject("Scripting.Dictionary")
arrID = rngID.Value
arrDate = rngDate.Value2

For i = 1 To UBound(arrID)
    If arrID(i, 1) = ID Then
        For j = arrDate(i, 1) To arrDate(i, 2)
            If Weekday(j, vbMonday) = 6 Then
                If Dic.Exists(j) = False Then
                    Dic.Item(j) = ""
                    T7CN = T7CN + 1
                End If
            ElseIf Weekday(j, vbMonday) = 7 Then
                If Dic.Exists(j) = False Then
                    Dic.Item(j) = ""
                    T7CN = T7CN + 2
                End If
            End If
        Next j
    End If
Next i
End Function
Trong cột "Số buổi tối đa theo lịch", nhập công thức:

=IF(AJ10="","",T7CN(U10,$U$10:$U$124,$AD$10:$AE$124))

.
 
Chỉnh lại dữ liệu dòng 12 công thức của bạn bị tèo
Thử code sau:

PHP:
Public Function T7CN(ByVal ID As String, ByVal rngID As Range, ByVal rngDate As Range) As Long
Dim arrID As Variant, arrDate As Variant
Dim Dic As Object
Dim i&, j&
Set Dic = CreateObject("Scripting.Dictionary")
arrID = rngID.Value
arrDate = rngDate.Value2

For i = 1 To UBound(arrID)
    If arrID(i, 1) = ID Then
        For j = arrDate(i, 1) To arrDate(i, 2)
            If Weekday(j, vbMonday) = 6 Then
                If Dic.Exists(j) = False Then
                    Dic.Item(j) = ""
                    T7CN = T7CN + 1
                End If
            ElseIf Weekday(j, vbMonday) = 7 Then
                If Dic.Exists(j) = False Then
                    Dic.Item(j) = ""
                    T7CN = T7CN + 2
                End If
            End If
        Next j
    End If
Next i
End Function
Trong cột "Số buổi tối đa theo lịch", nhập công thức:

=IF(AJ10="","",T7CN(U10,$U$10:$U$124,$AD$10:$AE$124))

.
Tính số buổi tối đa theo lịch kiểu nầy không giúp phát hiện được số buổi ngoài giờ khai báo dư :p
 

File đính kèm

Web KT

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

Back
Top Bottom