Nếu chỉ có 3 cột sao không copy, paste cho lẹ?Ví dụ em có 1 bảng gồm 3 cột họ tên HS (vd như cột họ tên HS giỏi, Khá, Tb), làm sao chỉ dùng hàm có thể gom lại còn 1 cột mà hiển thị hết họ tên HS loại giỏi rồi mới tới họ tên HS loại khá rồi đến loại Tb v.v..?
Em xin cảm ơn
Option Explicit
Sub Gop()
Dim i As Long, Er As Long, Sd As Long
Dim Rng As Range
Application.ScreenUpdating = False
[F3:G10000].ClearContents
For i = 1 To [A2].End(xlToRight).Column
Er = [F65536].End(xlUp).Row + 1
Set Rng = Range(Cells(3, i), Cells(10000, i)).SpecialCells(2, 23)
Sd = Rng.Rows.Count
With Cells(Er, 6).Resize(Sd, 1)
.Value = Rng.Value
.Offset(, 1).Value = Cells(2, i)
End With
Next
Application.ScreenUpdating = True
End Sub
Mình đã nói là ví dụ thôi mà, có thể hàng mấy trăm HS và nhiều cột, thực ra nếu không được thì chỉ còn cách copy, paste
Sub MyProcess()
Dim RWGioi, RWKha, RWTB As Long
RWgioi = Sheets("Data").[A65000].End(xlUp).Row
RWKha = Sheets("Data").[B65000].End(xlUp).Row
RWTB = Sheets("Data").[C65000].End(xlUp).Row
'---------------------------------------------------
With Sheets("Data")
.Columns("F:G").ClearContents
.[F1] = "Ho va Ten"
.[G1] = "Xep Loai"
.Range("A2:A" & RWgioi).Copy .[F2]
.Range("B2:B" & RWKha).Copy .Cells(RWgioi + 1, 6)
.Range("C2:C" & RWTB).Copy .Cells(RWgioi + RWKha + 0, 6)
.Range("G2:G" & RWgioi) = "Gioi"
.Range("G" & RWgioi + 1 & ":G" & RWgioi + RWKha) = "Kha"
.Range("G" & (RWgioi + RWKha) & ":G" & (RWgioi + RWKha + RWTB - 2)) = "TB"
End With
End Sub
Bạn xem đã đúng chưaVí dụ em có 1 bảng gồm 3 cột họ tên HS (vd như cột họ tên HS giỏi, Khá, Tb), làm sao chỉ dùng hàm có thể gom lại còn 1 cột mà hiển thị hết họ tên HS loại giỏi rồi mới tới họ tên HS loại khá rồi đến loại Tb v.v..?
Em xin cảm ơn
Option Explicit
Sub TgHop()
Dim Ff As Byte, lRow As Long
Application.ScreenUpdating = False: [G1] = "XepLoai"
Range([f2], [g1000]).Clear: [f1] = "HoTen"
For Ff = 1 To 3
lRow = Cells(65432, Ff).End(xlUp).Row - 2
[f65432].End(xlUp).Offset(1).Resize(lRow) = Range(Cells(3, Ff), Cells(65432, Ff)).Value
[G65432].End(xlUp).Offset(1).Resize(lRow) = Cells(2, Ff).Value
Next Ff
End Sub
dùng code là nhanh nhất, but ban thử cách dùng hàm của mình nhé, mình count mỗi loại hs trước, sau đó lặp cột STT -->cột xếp loại --> cột tên. Công thức hơi rối một chút, hehe, bạn tham khảo nhé.