Sub Tonghop()
Dim i As Long
Dim aD As Range, aD1 As Range, aD2 As Range
With Sheets("Dulieu")
For i = 1 To 5
Set aD = .Cells(65536, i).End(xlUp)
.Range(.Cells(2, i), aD).Copy Sheets("Tonghop").[B65536].End(xlUp).Offset(1, 0)
Set aD1 = Sheets("Tonghop").[B65536].End(xlUp).Offset(0, 1)
Set aD2 = Sheets("Tonghop").[C65536].End(xlUp).Offset(1, 0)
Range(aD1, aD2).Value = .Cells(1, i).Value
Next
Range(Sheets("Tonghop").[B65536].End(xlUp).Offset(0, -1), Cells(4, 1)) = "=row()-3"
End With
End Sub
Public Sub GPE()
Dim Rng(), Arr(1 To 1000, 1 To 3), i As Long, J As Long, K As Long
Rng = Sheets("Dulieu").[A1:A50].Resize(, 5).Value
For J = 1 To 5
For i = 2 To 50
If Rng(i, J) <> "" Then
K = K + 1: Arr(K, 1) = K
Arr(K, 2) = Rng(i, J): Arr(K, 3) = Rng(1, J)
End If
Next i
Next J
With Sheets("Tonghop")
.[A4:C1000].ClearContents
If K Then .[A4].Resize(K, 3).Value = Arr
End With
End Sub
Thử cái này xem nhé :
PHP:Sub Tonghop() Dim i As Long Dim aD As Range, aD1 As Range, aD2 As Range With Sheets("Dulieu") For i = 1 To 5 Set aD = .Cells(65536, i).End(xlUp) .Range(.Cells(2, i), aD).Copy Sheets("Tonghop").[B65536].End(xlUp).Offset(1, 0) Set aD1 = Sheets("Tonghop").[B65536].End(xlUp).Offset(0, 1) Set aD2 = Sheets("Tonghop").[C65536].End(xlUp).Offset(1, 0) Range(aD1, aD2).Value = .Cells(1, i).Value Next Range(Sheets("Tonghop").[B65536].End(xlUp).Offset(0, -1), Cells(4, 1)) = "=row()-3" End With End Sub
Cảm ơn bạn nhiều nhé. Nhưng mình không hiểu về VBA mấy, bạn có thể giải thích thêm được không? Nếu như sheets dulieu có thêm nhiều lớp nữa thì làm thế nào để tổng hợp được
For i = 1 To 5
Hình như là sửa cái chỗ nì nì:
Bạn có bao nhiêu lớp thì sửa thành bấy nhiêu.
Chẳng biết bạn thử thế nào mình thấy nó vẫn được đấy chứ. Vẫn chạy như NgựaMình cũng thử thay ở đó nhưng nó báo lỗi, không chạy được
Sub Tonghop2()
Dim dl(), i, j, k, kq(1 To 65000, 1 To 3)
dl = Sheets("Dulieu").UsedRange.Value
For i = 1 To UBound(dl, 2)
For j = 2 To UBound(dl)
If dl(j, i) <> "" Then
k = k + 1
kq(k, 1) = k
kq(k, 2) = dl(j, i)
kq(k, 3) = dl(1, i)
End If
Next
Next
Sheets("Tonghop").[A4:C10000].ClearContents
If k Then Sheets("Tonghop").[A4].Resize(k, 3) = kq
End Sub
Chẳng biết bạn thử thế nào mình thấy nó vẫn được đấy chứ. Vẫn chạy như Ngựa
Sub Tonghop()
Dim Rng(), Arr(1 To 1000, 1 To 3), i As Long, J As Long, K As Long
Rng = Sheets("Dulieu").[A1:A50].Resize(, 5).Value
For J = 1 To 5
For i = 2 To 50
If Rng(i, J) <> "" Then
K = K + 1: Arr(K, 1) = K
Arr(K, 2) = Rng(i, J): Arr(K, 3) = Rng(1, J)
End If
Next i
Next J
With Sheets("Tonghop")
.[A4:C1000].ClearContents
If K Then .[A4].Resize(K, 3).Value = Arr
End With
End Sub
Sub Tonghop()
Dim i As Long
Dim aD As Range, aD1 As Range, aD2 As Range
With Sheets("Dulieu")
For i = 1 To 8
Set aD = .Cells(65536, i).End(xlUp)
.Range(.Cells(2, i), aD).Copy Sheets("Tonghop").[B65536].End(xlUp).Offset(1, 0)
Set aD1 = Sheets("Tonghop").[B65536].End(xlUp).Offset(0, 1)
Set aD2 = Sheets("Tonghop").[C65536].End(xlUp).Offset(1, 0)
Range(aD1, aD2).Value = .Cells(1, i).Value
Next
Range(Sheets("Tonghop").[B65536].End(xlUp).Offset(0, -1), Cells(4, 1)) = "=row()-3"
End With
End Sub
Nếu không biết gì về "món này" thì chỉ cần biết Enable Macros.Của bạn đã thay code rồi mà, mình có bít gì món này đâu
Cách làm thì đã có rồi, bạn tiếp tục thực hiện đi.Em muốn hỏi cách làm để biết thôi. Còn trường hợp của em danh sách có 25 lớp, được bố trí từ cột J đến cột AH. Từ cột A-I là dữ liệu khác. Danh sách tổng hợp cũng có kẻ ô nữa. Mong được các anh chị em chỉ rõ hơn ạ.
-> Hoa Còi làm "thầy bói" hốt bạc!Nếu dữ liệu bạn ấy đưa ra không phải dữ liệu thật và mọi thứ chỉ mang tính giả định, dữ liệu thật bố trí lệch pha thì hướng dẫn cũng công cốc bác BATE ạ.
Giờ bắt ngồi giải thích tại sao nó lại thế để tùy biến áp dụng vào file thực thì chắc chết, HIX!
Cách làm thì đã có rồi, bạn tiếp tục thực hiện đi.
Giống như bạn muốn biết câu cá như thế nào để bạn "bắt chước", bây giờ đã thấy người khác câu rồi, bạn câu thử xem, biết đâu câu được cá lớn hơn thì sao.