Bạn mô tả kiểu võ lâm thì mình làm theo kiểu thiếu lâm tự nhé, còn thiếu xíu nữa là hoàn chỉnh bạn tự bổ sung nhé. Khi nào siêng thì rút gọn code lại tí
Đúng ra Sub này nên tách ra làm 2 sub. Nếu H7 <> "" thì chạy 1 Sub và ngược lại
PHP:Sub loc() Dim Data(), Res(), i, j, k [A13:H5000].ClearContents Data = Sheet1.Range(Sheet1.[AB9], Sheet1.[AB65536].End(3)).Resize(, 10).Value ReDim Res(1 To UBound(Data), 1 To 8) For i = 1 To UBound(Data) If Data(i, 1) >= [D5].Value Then If Data(i, 1) <= [D6].Value Then If [H7].Value = "" Then If Data(i, 9) = [H6].Value Or Data(i, 8) = [H6].Value Then k = k + 1 Res(k, 1) = Data(i, 1) Res(k, 2) = Data(i, 2) Res(k, 3) = Data(i, 3) Res(k, 4) = Data(i, 5) Res(k, 5) = Data(i, 7) If Data(i, 8) = [H6].Value Then Res(k, 6) = Data(i, 9) If Data(i, 9) = [H6].Value Then Res(k, 6) = Data(i, 8) If Data(i, 8) = [H6].Value Then Res(k, 7) = Data(i, 10) If Data(i, 9) = [H6].Value Then Res(k, 8) = Data(i, 10) End If Else If Data(i, 6) = [H7].Value Then If Data(i, 9) = [H6].Value Or Data(i, 8) = [H6].Value Then k = k + 1 Res(k, 1) = Data(i, 1) Res(k, 2) = Data(i, 2) Res(k, 3) = Data(i, 3) Res(k, 4) = Data(i, 5) Res(k, 5) = Data(i, 7) If Data(i, 8) = [H6].Value Then Res(k, 6) = Data(i, 9) If Data(i, 9) = [H6].Value Then Res(k, 6) = Data(i, 8) If Data(i, 8) = [H6].Value Then Res(k, 7) = Data(i, 10) If Data(i, 9) = [H6].Value Then Res(k, 8) = Data(i, 10) End If End If End If End If End If Next k = k + 1 Res(k, 7) = "=sum(R13C:R[-1]C)" Res(k, 8) = "=sum(R13C:R[-1]C)" [A13].Resize(k, 8) = Res End Sub
Không cần phải vậy. Các IF's trong bài này lồng trơn vào nhau - tức là không có lệnh khác. Như vậy ta có thể dùng AND. Phần code trong ELSE cũng in hệt như IF, nên có thể dùng OR
PHP:
If Data(i, 1) >= [D5].Value AND Data(i, 1) <= [D6].Value _ ' trong giới hạn ngày '
AND ([H7].Value = "" OR Data(i, 6) = [H7].Value) _ ' đúng mã KH '
AND (Data(i, 9) = [H6].Value Or Data(i, 8) = [H6].Value) Then ' dúng mã tài khoản đối chiếu '
k = k + 1
Res(k, 1) = Data(i, 1)
Res(k, 2) = Data(i, 2)
Res(k, 3) = Data(i, 3)
Res(k, 4) = Data(i, 5)
Res(k, 5) = Data(i, 7)
' If Data(i, 8) = [H6].Value Then Res(k, 6) = Data(i, 9) '
' If Data(i, 9) = [H6].Value Then Res(k, 6) = Data(i, 8) '
' If Data(i, 8) = [H6].Value Then Res(k, 7) = Data(i, 10) '
' If Data(i, 9) = [H6].Value Then Res(k, 8) = Data(i, 10) '
' điều kiện đã thử rồi, [H6].Value bắt buộc phải = Data(i, 8 hoặc 9) '
Res(k, 6) = Data(i, Iif(Data(i, 8) = [H6].Value, 9, 8))
Res(k, Iif(Data(i, 8) = [H6].Value, 7, 8)) = Data(i, 10)
End If
Lần chỉnh sửa cuối: