Xin CODE để sắp xếp dữ liệu cho 4 cột (9 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Tran Mui

Thành viên thường trực
Tham gia
29/12/07
Bài viết
237
Được thích
56
Mong GPE giúp tôi đoạn CODE thực hiện khi Clik chuột vào nhãn
File đính kèm
Xin cám ơn
 

File đính kèm

Máy tôi dùng Office 2003 nên chỉ sort được 3 cột thôi.

Mã:
Sub Macro1()
    [b5:e1000].Sort [e5], 1, [b5], Order2:=1, Key3:=[c5], Order3:=1, Header:=xlNo
End Sub
Bạn xem thẻ file này
 

File đính kèm

Máy tôi dùng Office 2003 nên chỉ sort được 3 cột thôi.
Mã:
Sub Macro1()
    [b5:e1000].Sort [e5], 1, [b5], Order2:=1, Key3:=[c5], Order3:=1, Header:=xlNo
End Sub
Bạn xem thẻ file này
Nếu Excel chỉ sắp xếp được 3 cột mà ta có nhu cầu sắp nhiều hơn thế thì ta chia thành nhiều lần sắp xếp, mỗi lần sắp xếp theo 3 cột. Trong mỗi lần sắp như vậy thì ưu tiên theo thứ tự bình thường (ưu tiên trước thì xếp trước). Còn giữa các lần sắp xếp thì nhóm nào có độ ưu tiên thấp nhất xếp trước, nhóm nào có độ ưu tiên cao nhất xếp cuối cùng.
Như vậy, yêu cầu này ta có thể chia thành 2 lần sắp xếp: Lần thứ nhất xếp theo thứ tự ưu tiên cột B, C, D. Lần thứ 2 xếp theo cột E.
Có thể bổ sung thêm trong code của anh như vầy là được:
PHP:
Sub Macro1()
    [B5:E1000].Sort [B5], 1, [C5], Order2:=1, Key3:=[D5], Order3:=1, Header:=xlNo
    [B5:E1000].Sort [E5], 1, Header:=xlNo
End Sub
 
Nếu Excel Như vậy, yêu cầu này ta có thể chia thành 2 lần sắp xếp: Lần thứ nhất xếp theo thứ tự ưu tiên cột B, C, D. Lần thứ 2 xếp theo cột E.

Cho hỏi trong lệnh Sort, mỗi cột có thể sort theo hướng tăng dần hoặc hướng giảm dần thì ta thay đổi thông số nào!
cảm ơn!
P/s: Hic, thay đổi số 1 thành 2
 
Lần chỉnh sửa cuối:
Nếu Excel chỉ sắp xếp được 3 cột mà ta có nhu cầu sắp nhiều hơn thế thì ta chia thành nhiều lần sắp xếp, mỗi lần sắp xếp theo 3 cột. Trong mỗi lần sắp như vậy thì ưu tiên theo thứ tự bình thường (ưu tiên trước thì xếp trước). Còn giữa các lần sắp xếp thì nhóm nào có độ ưu tiên thấp nhất xếp trước, nhóm nào có độ ưu tiên cao nhất xếp cuối cùng.
Như vậy, yêu cầu này ta có thể chia thành 2 lần sắp xếp: Lần thứ nhất xếp theo thứ tự ưu tiên cột B, C, D. Lần thứ 2 xếp theo cột E.
Có thể bổ sung thêm trong code của anh như vầy là được:
PHP:
Sub Macro1()
    [B5:E1000].Sort [B5], 1, [C5], Order2:=1, Key3:=[D5], Order3:=1, Header:=xlNo
    [B5:E1000].Sort [E5], 1, Header:=xlNo
End Sub
Sắp xếp như này không đc ạ.
Đoạn code sắp xếp theo E5 làm đảo lộn hết kết quả sắp xếp theo B5,C5,D5.
Em dùng off2013 cũng chỉ sort đc theo 3 tiêu chí.
Vậy có cách nào sắp xếp 4 tiêu chí trở lên ko ạ?
 
Tôi dùng Excel 2010 đã sort được một lúc cả chục cột rồi, bạn dùng 2013 lại chỉ sort được có 3 cột ---> Ngộ thiệt!
Hay cú pháp của em sai --=0 ẹc
Toàn báo lỗi, em chỉ thêm key 4 và order 4 vào thôi mà
Thầy cho ví dụ 1 đoạn code đc ko ạ?
 
Ah. Lúc nãy e làm trên máy cơ quan dùng off2007.
Vậy 2007 chưa cải tiến chức năng này?

[NOTE1] mod nào quản lý box này Chuyển topic này sang box lập trình cho hợp lý ạ [/NOTE1]
 
Lần chỉnh sửa cuối:
Hay cú pháp của em sai --=0 ẹc
Toàn báo lỗi, em chỉ thêm key 4 và order 4 vào thôi mà
Thầy cho ví dụ 1 đoạn code đc ko ạ?
Mình không phải Thầy Bà gì hết nhưng chơi láng mọi thứ. Môn phái loạn cào cào mà lị.

Theo nguồn tin chưa được kiểm chứng thì sort được 64 cột đó nhá
 
Lần chỉnh sửa cuối:
Thử 1 cái loạn cào cào đi anh..luyen đc 1 phần môn phái loạn cào cào của a thì e cũng đã thành TRUNG THỦ rầu..
Muốn thử thì thử nè. Cơ bản là mình đang có 5 cột từ A đến E. Tự mò đi nha. Mấy cái quỷ này dễ òm.
PHP:
Sub SortMultiCols()
Dim SortRng As Range
Set SortRng = Range("A2:A1000")
      ActiveSheet.Sort.SortFields.Clear
      With Worksheets("Sheet1").Sort
         .SortFields.Add SortRng
         .SortFields.Add SortRng.Offset(, 1)
         .SortFields.Add SortRng.Offset(, 2)
         .SortFields.Add SortRng.Offset(, 3)
         .SortFields.Add SortRng.Offset(, 4)
         .SetRange SortRng.Resize(, 5)
         .Header = xlYes
         .Apply
    End With
End Sub

Nếu muốn nhức đầu thêm thì chơi kiểu này. Đừng có hỏi gì nha.
PHP:
Sub SortMultiCols()
Dim SortRng As Range
Set SortRng = Range("A2:A1000")
      ActiveSheet.Sort.SortFields.Clear
      With Worksheets("Sheet1").Sort
         .SortFields.Add SortRng
         .SortFields.Add SortRng(, 2)
         .SortFields.Add SortRng(, 3)
         .SortFields.Add SortRng(, 4)
         .SortFields.Add SortRng(, 5)
         .SetRange SortRng.Resize(, 5)
         .Header = xlYes
         .Apply
    End With
End Sub

PS: Nếu thiếu dòng Clear thì hỡi ôi mái lá hóa tro than. Nó add riết một rừng luôn
 
Lần chỉnh sửa cuối:
Vẫn phải hỏi chút xíu là em chưa thấy tham số để sắp xếp tăng hoặc giảm tùy từng cột ?
 
Có một thủ thuật dành cho sắp xếp nhiều cột đó là dùng cột phụ ghép lần lượt các cột lại với nhau theo đúng thứ tự ưu tiên và Sort theo cột phụ này là được.
 
Có một thủ thuật dành cho sắp xếp nhiều cột đó là dùng cột phụ ghép lần lượt các cột lại với nhau theo đúng thứ tự ưu tiên và Sort theo cột phụ này là được.
THỦ THUẬT này DHN chia sẻ thêm cho mng xem sao?
 
THỦ THUẬT này DHN chia sẻ thêm cho mng xem sao?
Nói vậy mà hỏng hiểu hả trời, còn phải xem ví dụ à? Tự tạo ra file nghiêng qua nghiêng lại rồi cú vào đầu mấy cái thử coi.
Dù chưa thử nhưng mình cảm giác không an toàn lắm vì biết đâu có cột thì ưu tiên lên, có cột ưu tiên xuống thì toi mạng. ọc ọc
 
Web KT

Bài viết mới nhất

Back
Top Bottom