Sắp xếp dữ liệu dùng VBA

Liên hệ QC

Emyeuexcel

Thành viên thường trực
Tham gia
9/6/16
Bài viết
269
Được thích
26
Chào anh chị em GPE,

Mình có file kèm muốn sắp xếp giảm dần cột S (Total YTD) bằng VBA (vì mình làm nhiều lặp đi lặp lại với nhiều nhóm hàng khác nhau), nhưng mỗi tuần mỗi tháng có chèn thêm cột phía trước nên cột cần sắp xếp luôn thay đổi ( vd hiện nay cột S, nhưng tuần sau sẽ cột T).
Vậy dùng VBA thế nào để nó luôn sort đúng cột tiêu đề Total YTD ah?

Sub Sort_Header() 'Sort in Ascending with Header
Range("A2", Range("S" & Rows.Count).End(xlUp)).Sort [S3], xlAscending, Header:=xlYes
End Sub

Rất mong ACE GPE giúp đỡ!
Mình chân thành cảm ơn rất nhiều!
 

File đính kèm

  • Sap xep du lieu voi VBA-cột sap xep thay đổi.xlsm
    12.8 KB · Đọc: 9
Vậy dùng VBA thế nào để nó luôn sort đúng cột tiêu đề Total YTD ah?
Thử code này:
Mã:
Sub Sort_Header() 'Sort in Ascending with Header
Dim iCol&
With Sheet1
    iCol = .Cells(2, Columns.Count).End(1).Column
    .Range("A2", Range("S" & Rows.Count).End(xlUp)).Resize(, iCol).Sort .Cells(2, iCol), xlAscending, Header:=xlYes
End With
End Sub
 
Chào anh chị em GPE,

Mình có file kèm muốn sắp xếp giảm dần cột S (Total YTD) bằng VBA (vì mình làm nhiều lặp đi lặp lại với nhiều nhóm hàng khác nhau), nhưng mỗi tuần mỗi tháng có chèn thêm cột phía trước nên cột cần sắp xếp luôn thay đổi ( vd hiện nay cột S, nhưng tuần sau sẽ cột T).
Vậy dùng VBA thế nào để nó luôn sort đúng cột tiêu đề Total YTD ah?

Sub Sort_Header() 'Sort in Ascending with Header
Range("A2", Range("S" & Rows.Count).End(xlUp)).Sort [S3], xlAscending, Header:=xlYes
End Sub

Rất mong ACE GPE giúp đỡ!
Mình chân thành cảm ơn rất nhiều!
Bạn thử code này xem sao nhé
Sub Sort_Header() 'Sort in Ascending with Header
r = Sheet1.Cells(1048576, 1).End(xlUp).Row - 1
c = Application.WorksheetFunction.Match("Total YTD", Sheet1.Range("2:2"), 0)
Sheet1.Cells(2, 1).Resize(r, c).Sort Sheet1.Cells(3, c), xlAscending, Header:=xlYes
End Sub
 
Thử code này:
Mã:
Sub Sort_Header() 'Sort in Ascending with Header
Dim iCol&
With Sheet1
    iCol = .Cells(2, Columns.Count).End(1).Column
    .Range("A2", Range("S" & Rows.Count).End(xlUp)).Resize(, iCol).Sort .Cells(2, iCol), xlAscending, Header:=xlYes
End With
End Sub
Vụ này vô tình có cột phụ thì hơi căng nhỉ.
 
Thử code này:
Mã:
Sub Sort_Header() 'Sort in Ascending with Header
Dim iCol&
With Sheet1
    iCol = .Cells(2, Columns.Count).End(1).Column
    .Range("A2", Range("S" & Rows.Count).End(xlUp)).Resize(, iCol).Sort .Cells(2, iCol), xlAscending, Header:=xlYes
End With
End Sub
Mình sẽ thử ngay! Cảm ơn bạn nhiều!
Bài đã được tự động gộp:

Bạn thử code này xem sao nhé
Sub Sort_Header() 'Sort in Ascending with Header
r = Sheet1.Cells(1048576, 1).End(xlUp).Row - 1
c = Application.WorksheetFunction.Match("Total YTD", Sheet1.Range("2:2"), 0)
Sheet1.Cells(2, 1).Resize(r, c).Sort Sheet1.Cells(3, c), xlAscending, Header:=xlYes
End Sub
Chân thành cảm ơn bạn rất nhiều!
 
Web KT
Back
Top Bottom