Option Explicit
Sub gpeTongHopThiDua()
'Đến trước dòng lệnh 2: Khai báo các biến cần dùng:'
Dim Sh As Worksheet, Rg0 As Range, Rng As Range, sRng As Range
Dim Jj As Byte, DH As Byte
Dim rBD As Long, Res As Long, hRw As Long
Dim MyAdd As String
'F1: Kích hoạt trang tính "Tổng hợp"; F2: Đem vùng đã gán tên gán cho biến đối tượng:'
2 Sheet33.Select: Set Rg0 = Range("DHTD")
'Cho hiện các dòng đã ẩn trước đó:'
Rows("1:999").Hidden = False
'Thiết lập vòng lặp duyệt theo thành viên trong biến đã gán dữ liệu (cho đến dòng lệnh cuối):'
4 For Jj = 1 To Rg0.Cells.Count
' Đ/K nếu gặp ô nào rỗng thì thoát ngay:'
If Rg0(Jj).Value = "" Then Exit For
' Theo trình tự vòng lặp ta ấn định các chỉ số dòng tương ứng:'
rBD = Choose(Jj, 7, 43, 123, 323)
'Như trên, với chỉ số độ giản cách:'
Res = Choose(Jj, 33, 77, 197, 300)
'Xóa dữ liệu cũ:'
Cells(rBD, "B").Resize(Res, 7).ClearContents
'Thiết lập vòng lập duyệt qua tất thẩy các trang tính (cho đến dòng lệnh 24):'
For Each Sh In ThisWorkbook.Worksheets
'Đ/K nếu không fải là trang "Tổng hợp" thì thực thi các lệnh cho đến dòng 23:'
If Sh.Index <> 32 Then
'Đem cột "G" của trang tính đang duyệt gán vô biến:'
Set Rng = Sh.Columns("G:G") '<=|'
'Tìm trong biến vùng trị trùng với ô mà vòng lặp (4) đang khảo sát:'
Set sRng = Rng.Find(Rg0(Jj).Value, , xlFormulas, xlWhole)
'Nếu tìm thấy thì thưc hiện các lệnh cho đến dòng 22:'
If Not sRng Is Nothing Then
'Gán địa chỉ ô tìm thấy cho biến:'
MyAdd = sRng.Address '<=|'
'Thiết lập vòng lặp duyệt hết dữ liệu trùng với danh hiệu đang tìm cho đến dòng 21:'
Do '<=|'
'Tuyên bố làm việc với ô có các chỉ số tương ứng giữ trong các biến - cho đến dòng 19:'
With Cells(rBD + Res, "B").End(xlUp).Offset(1)
'Gán trị của dòng tìm thấy vô dòng cần gán:'
.Resize(, 7).Value = Sh.Cells(sRng.Row, "B").Resize(, 7).Value
'Gàn dòng thích hợp vô biến:'
hRw = .Row + 3
End With
'Tìm tiếp cho đến hết các ô trên cột "G" của trang đang duyệt:'
20 Set sRng = Rng.FindNext(sRng) '<=|'
Loop While Not sRng Is Nothing And sRng.Address <> MyAdd '<=|'
22 End If
End If
24 Next Sh
'Ẩn các dòng không dữ liệu trong vùng:'
Range(Cells(hRw, "B"), Cells(rBD + Res - 1, "B")).EntireRow.Hidden = True
Next Jj
End Sub