Sub loc_biendong()
    Dim arr(), kq(), dk As Boolean, i As Long, a As Long, lr As Long
    Dim sh_nhatkydc As Worksheet, sh_loc_Nky As Worksheet
    Dim tungay As Date, denngay As Date
    Dim bophansudung As String, ii&
    Dim nghiepvu As String
    Dim dkloc As Integer, dkngay As Long, dkbophan As Integer, dknghiepvu As Integer
    Set sh_nhatkydc = Sheet31
    Set sh_loc_Nky = Sheet28
    tungay = sh_nhatkydc.Range("C4").Value
    denngay = sh_nhatkydc.Range("C5").Value
    bophansudung = sh_nhatkydc.Range("D5").Value
    nghiepvu = sh_nhatkydc.Range("E5").Value
    If tungay > 0 And denngay > 0 Then
        dkngay = 1
    End If
    If bophansudung <> "" Then
        dkbophan = 2
    End If
    If nghiepvu <> "" Then
        dknghiepvu = 4
    End If
    dkloc = dkngay + dkbophan + dknghiepvu
    With sh_nhatkydc
        lr = .Range("A" & Rows.Count).End(xlUp).Row 'Tim dong cuoi
        arr = .Range("A11:S" & lr).Value
        ReDim kq(1 To UBound(arr, 1), 1 To 19)
        For i = 1 To UBound(arr, 1)
            If dkloc = 1 Then
                'Loc theo ngay
                dk = arr(i, 1) >= tungay And arr(i, 1) <= denngay
            ElseIf dkloc = 2 Then
                'Loc theo bo phan
                dk = arr(i, 7) = bophansudung
            ElseIf dkloc = 3 Then
                'Loc theo ngay va Bo phan su dung
                dk = arr(i, 1) >= tungay And arr(i, 1) <= denngay And arr(i, 7) = bophansudung
            ElseIf dkloc = 7 Then
                'Loc theo ngay, Bo phan su dung va nghiep vu
                dk = arr(i, 1) >= tungay And arr(i, 1) <= denngay And arr(i, 7) = bophansudung And arr(i, 19) = nghiepvu
            ElseIf dkloc = 4 Then
                'Loc theo nghiep vu
                dk = arr(i, 19) = nghiepvu
            ElseIf dkloc = 5 Then
                'Loc theo ngay va nghiep vu
                dk = arr(i, 1) >= tungay And arr(i, 1) <= denngay And arr(i, 19) = nghiepvu
            Else
                MsgBox "Khong co Record nao het!!!", vbInformation
                Exit Sub
            End If
            If dk = True Then
                a = a + 1
                kq(a, 1) = arr(i, 1)
                kq(a, 2) = a
                For ii = 3 To 19
                    kq(a, ii) = arr(i, ii)
                Next
            End If
        Next i
    End With
    With sh_loc_Nky
        .Range("A12:T50000").ClearContents
        If a > 0 Then
            .Range("D12").Resize(a).NumberFormat = "@"
            .Range("A12").Resize(a, 19).Value = kq
        Else
            MsgBox "Khong thay record nao de loc", vbInformation
        End If
    End With
End Sub