Option Explicit
Sub TKThuoc()
Dim Clls As Range, Sh As Worksheet: Dim MyColor As Byte
Dim KhHg As String, TenNT As String
Set Sh = Sheets("TKet"): Sheets("Th11").Select
MyColor = Sh.[a1].Interior.ColorIndex + 1
Sh.[B1].CurrentRegion.Offset(1).Clear
Application.ScreenUpdating = False
1 'Chép 11 Tháng'
For Each Clls In Range([A5], [a65500].End(xlUp))
If Left(Clls.Value, 2) = "KH" Then
KhHg = Clls.Value: TenNT = Clls.Offset(, 1).Value
ElseIf Left(Clls.Value, 2) = "Th" Then
With Sh.[a65500].End(xlUp).Offset(1)
.Value = KhHg: .Offset(, 1).Value = TenNT
.Offset(, 2).Value = Cells(Clls.Row - 1, 4).Value
.Offset(, 3).Resize(, 5).Value = Clls.Offset(, 1).Resize(, 5).Value
.Offset(, 8).Value = Right$("0" & Month(Cells(Clls.Row - 1, 2).Value), 2)
End With
End If
Next Clls
Sh.[a1].Resize(, 9).Interior.ColorIndex = IIf(MyColor > 41, 34, MyColor)
Sh.[a1].End(xlDown).Offset(1).Resize(, 9).Interior.ColorIndex = 39
2 'Chép Khách Hàng Phát Sinh Trong Tháng 12'
Const T01 As String = "KHANG", T02 As String = "SPACAPS"
Dim Rng As Range, sRng As Range
Dim MyAdd As String
Sheets("Th12").Select
Set Rng = Sh.Range(Sh.[a1], Sh.[a65500].End(xlUp))
For Each Clls In Range([A13], [a65500].End(xlUp))
If Left(Clls.Value, 2) = "KH" Then
KhHg = Clls.Value: TenNT = Clls.Address
Set sRng = Rng.Find(KhHg, , xlFormulas, xlWhole)
If sRng Is Nothing Then
Range(TenNT).Interior.ColorIndex = 35 + Clls.Row Mod 6
TenNT = Range(TenNT).Offset(, 1).Value
Else
KhHg = "": TenNT = ""
End If
ElseIf (UCase$(Right(RTrim(Clls.Offset(, 1).Value), 4)) = T01 Or _
Trim(UCase(Clls.Offset(, 1).Value)) = T02) And KhHg <> "" Then
With Sh.[a65500].End(xlUp).Offset(1)
.Value = KhHg: .Offset(, 1).Value = TenNT
.Offset(, 2).Value = Clls.Offset(, 1).Value
.Offset(, 3).Resize(, 5).Value = Clls.Offset(1, 4).Resize(, 5).Value
.Offset(, 8).Value = 12
End With
End If
Next Clls
Sh.Select: Set Sh = Nothing
End Sub