Sub TachSao()
'Nhan 3 phím: Ctrl + Shift + T chay code
Dim Sh As Worksheet, RngList As Range, Rng As Range, sArr As Variant, Dic As Object
Dim i As Long, ik As Long, n As Long, lRow As Long
Dim tmp As String, ShName As String
Application.ScreenUpdating = False
sArr = Array("La H" & ChrW(7847) & "u", "Thái B" & ChrW(7841) & "ch", "K" & ChrW(7871) & " " & ChrW(272) & "ô", "Sao H" & ChrW(7897) & "i")
Set Sh = Sheets(sArr(3)) 'Sheet Sao Hoi"
lRow = Sh.Range("B" & Rows.Count).End(xlUp).Row
If lRow > 4 Then Sh.Range("A5:G" & lRow).Clear
With Sheet1
lRow = .Range("G" & Rows.Count).End(xlUp).Row
If lRow < 5 Then MsgBox ("Khong co du lieu, Khong Sao"): Exit Sub
Sh.Range("A5:D" & lRow).Value = .Range("A5:D" & lRow).Value
Sh.Range("E5:E" & lRow).Value = .Range("G5:G" & lRow).Value
Sh.Range("A5:E" & lRow).Borders.LineStyle = 1
End With
Set RngList = Sh.Range("A4:E" & lRow)
Set Rng = Sh.Range("A5:E" & lRow)
For i = 0 To 2
ShName = sArr(i)
RngList.AutoFilter Field:=5, Criteria1:=ShName
If Rng.SpecialCells(xlCellTypeLastCell).Row > 4 Then
If TestSheet(ShName) Then
Set ShMain = Sheets.Add(After:=Sheets(Sheets.Count))
Sheets(Sheets.Count).Name = ShName
Sh.Range("A1:E4").Copy Destination:=Sheets(ShName).Range("A1")
End If
With Sheets(ShName)
lRow = .Range("B" & Rows.Count).End(xlUp).Row
If lRow > 4 Then .Range("A5:E" & lRow).Clear
Rng.SpecialCells(12).Copy Destination:=.Range("A5")
Rng.EntireRow.Delete
lRow = .Range("B" & Rows.Count).End(xlUp).Row
.Range("A5").Value = 1
.Range("A5:A" & lRow).DataSeries
End With
RngList.AutoFilter
Else
Sheets(ShName).Delete
End If
Next i
lRow = Sh.Range("B" & Rows.Count).End(xlUp).Row
If lRow > 4 Then
Sh.Range("A5").Value = 1
Sh.Range("A5:A" & lRow).DataSeries
End If
Application.ScreenUpdating = True
End Sub
Private Function TestSheet(ShName As String) As Boolean
On Error Resume Next
ShName = Sheets(ShName).Name
If Err.Number Then TestSheet = True
On Error GoTo 0
End Function