[Hỏi] Tạo Marco tự động Multi sort (1 người xem)

Liên hệ QC

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

frozenvn

Thành viên mới
Tham gia
18/1/13
Bài viết
6
Được thích
0
Chào các bác,
Nhờ các bác giúp em vụ này:
Em muốn làm một bảng tổng sắp huy chương, số liệu như trong file đính kèm.
Có 5 loại huy chương: Vàng, Bạc, Đồng, Nhôm, Chì.
Bảng tổng sắp xếp thứ tự từ cao nhất (thứ 1) đến thấp nhất. Thứ tự ưu tiên là Vàng, nếu vàng bằng nhau thì xét đến Bạc, nếu Bạc vẫn bằng nhau thì xét đến Đồng, ... lần lượt cho đến Chì.
Dùng chức năng sort thủ công thì cũng đc nhưng em muốn làm thành 1 file mà nó tự động sort theo thứ tự ưu tiên trên.
Em đã thử tạo Marco nhưng Run xong, khi em cập nhật dữ liệu thì bảng tổng sắp nó không tự động cập nhật.
Nhờ các bác giúp đỡ.
Em xin cảm ơn.
 

File đính kèm

Lần đầu tiên tôi mới thấy được Huy chương NHÔM với huy chương CHÌ đó!
 
Upvote 0
Mình lấy ví dụ cho dễ hiểu thôi.
Sort mà ít thứ tự ưu tiên thì còn dùng hàm đc, có những bảng sắp xếp cần tới chục thứ tự ưu tiên thì chắc là phải phương án khác. Nhờ các cao thủ ra tay :)
 
Upvote 0
Mình lấy ví dụ cho dễ hiểu thôi.
Sort mà ít thứ tự ưu tiên thì còn dùng hàm đc, có những bảng sắp xếp cần tới chục thứ tự ưu tiên thì chắc là phải phương án khác. Nhờ các cao thủ ra tay :)
Đây là bài toán không thực tế, khi nào có huy chương nhôm và chì thì mình giúp cho.
 
Upvote 0
Mình lấy ví dụ cho dễ hiểu thôi.
Sort mà ít thứ tự ưu tiên thì còn dùng hàm đc, có những bảng sắp xếp cần tới chục thứ tự ưu tiên thì chắc là phải phương án khác. Nhờ các cao thủ ra tay :)
Bạn cho file thực tế đi, bao nhiêu cột xác định và ưu tiên cho những cột nào (nhưng cái này dễ ùm đó mà, ghi lại macro, chọn khối ô (không bao gồm cái mergecell màu vàng) rôi vào SORT, cái cột nào ưu tiên thì để trên cùng, sau đó cứ add level thôi cho đến hết các cột cần ưu tiên, xong bấm OK. Tắt ghi macro, bây giờ thử chạy macro vừa quay là xong).
 
Upvote 0
Đây là bài toán không thực tế, khi nào có huy chương nhôm và chì thì mình giúp cho.
Áp dụng vào đánh giá, sắp xếp hạng về số sản phẩm bán ra của nhân viên kinh doanh bác ơi. Có nhiều mặt hàng và phải xếp thứ tự ưu tiên.
Ví dụ ông A bán được 1 bộ dây chuyền máy móc thì sẽ xếp hạng hơn hẳn ông B bán đc 100 cái xe tải. Ông C và ông B cùng bán được 100 cái xe tải, mà ông C bán được 50 cái động cơ xe tải còn ông B chỉ bán được 30 cái động cơ thì ông C xếp hạng cao hơn ông B.
Rất thực tế bác ạ.
 
Upvote 0
Áp dụng vào đánh giá, sắp xếp hạng về số sản phẩm bán ra của nhân viên kinh doanh bác ơi. Có nhiều mặt hàng và phải xếp thứ tự ưu tiên.
Ví dụ ông A bán được 1 bộ dây chuyền máy móc thì sẽ xếp hạng hơn hẳn ông B bán đc 100 cái xe tải. Ông C và ông B cùng bán được 100 cái xe tải, mà ông C bán được 50 cái động cơ xe tải còn ông B chỉ bán được 30 cái động cơ thì ông C xếp hạng cao hơn ông B.
Rất thực tế bác ạ.
Vậy bác đưa file thực tế lên đây, khoảng 10 cột ưu tiên không? phát một là ra không cần code gì hết.
 
Upvote 0
Vậy bác đưa file thực tế lên đây, khoảng 10 cột ưu tiên không? phát một là ra không cần code gì hết.
File nặng quá, mình phải up lên dropbox và mediafire, bác chịu khó tải về.
https://www.dropbox.com/s/r4ephdedm2igybf/Protocol BMT AMP.xlsx?dl=0
http://www.mediafire.com/view/vw8zhiwv4v2aeai/Protocol_BMT_AMP.xlsx
Chỉ cần quan tâm tới dữ liêu trong Sheet "Final" thôi.
Các dữ liệu mình cần sort theo ý muốn riêng tuỳ tiêu chí của từng phòng ban. Bạn có thể thấy trong file có nhiều colum. Lấy file thực tế sợ sẽ thêm rắc rối do data nhiều, mình lấy ví dụ trên cho dễ hiểu. Mình chỉ cần hiểu để thực hiện mà thôi.
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn cho file thực tế đi, bao nhiêu cột xác định và ưu tiên cho những cột nào (nhưng cái này dễ ùm đó mà, ghi lại macro, chọn khối ô (không bao gồm cái mergecell màu vàng) rôi vào SORT, cái cột nào ưu tiên thì để trên cùng, sau đó cứ add level thôi cho đến hết các cột cần ưu tiên, xong bấm OK. Tắt ghi macro, bây giờ thử chạy macro vừa quay là xong).
Mình đã thử làm như thế nhưng sau khi mình gõ vào dữ liệu mới thì bảng không tự động sắp xếp lại.
File thực tế liên quan đến công việc chuyên môn của mình, và mình cần sort theo nhiều tiêu chí. Mình chỉ cần hiểu vấn đề để tự làm nên mới lấy ví dụ. File thực tế lớn hơn dung lượng 4rum cho phép nên mình up lên Dropbox và Mediafire. Dữ liệu cần xử lý ở trong Sheet "Final".
Cảm ơn bạn.
https://www.dropbox.com/s/r4ephdedm2igybf/Protocol BMT AMP.xlsx?dl=0
http://www.mediafire.com/view/vw8zhiwv4v2aeai/Protocol_BMT_AMP.xlsx
 
Upvote 0
Mình đã thử làm như thế nhưng sau khi mình gõ vào dữ liệu mới thì bảng không tự động sắp xếp lại.
File thực tế liên quan đến công việc chuyên môn của mình, và mình cần sort theo nhiều tiêu chí. Mình chỉ cần hiểu vấn đề để tự làm nên mới lấy ví dụ. File thực tế lớn hơn dung lượng 4rum cho phép nên mình up lên Dropbox và Mediafire. Dữ liệu cần xử lý ở trong Sheet "Final".
Cảm ơn bạn.
https://www.dropbox.com/s/r4ephdedm2igybf/Protocol BMT AMP.xlsx?dl=0
http://www.mediafire.com/view/vw8zhiwv4v2aeai/Protocol_BMT_AMP.xlsx
Sort thứ nhất là không được đụng chạm đến Merge Cell, thứ 2 là không nên tự động sort vì mỗi ô nhập liệu xong Enter nó lại sort, rất bực mình, ta cứ từ từ mà gõ cho xong bảng tính, sau đó bấm nút cái kịt là sort. Làm thêm 1 động tác bấm đâu ai mà lười biếng đến nỗi phải không?
 
Upvote 0
Sort thứ nhất là không được đụng chạm đến Merge Cell, thứ 2 là không nên tự động sort vì mỗi ô nhập liệu xong Enter nó lại sort, rất bực mình, ta cứ từ từ mà gõ cho xong bảng tính, sau đó bấm nút cái kịt là sort. Làm thêm 1 động tác bấm đâu ai mà lười biếng đến nỗi phải không?
Với mình thì không sao. Nhưng ở công ty mình có nhiều người (chủ yếu công nhân) không biết dùng Excel, họ chỉ biết thao tác open và close mà thôi. Mình muốn làm thành file cho từng bộ phận (đặt file name theo tên bộ phận), khi họ mở ra là nó auto sort theo đúng tiêu chí cần thiết cho bộ phận của họ để họ nhìn các thông số. Đó là lý do tại sao mình cần một file mà có thể auto multi sort.
 
Upvote 0
Với mình thì không sao. Nhưng ở công ty mình có nhiều người (chủ yếu công nhân) không biết dùng Excel, họ chỉ biết thao tác open và close mà thôi. Mình muốn làm thành file cho từng bộ phận (đặt file name theo tên bộ phận), khi họ mở ra là nó auto sort theo đúng tiêu chí cần thiết cho bộ phận của họ để họ nhìn các thông số. Đó là lý do tại sao mình cần một file mà có thể auto multi sort.
Thì làm một cái quay macro rồi gán vào sự kiện thôi.

File tôi gửi lên cho bạn là theo yêu cầu ở bài 1, mở file thì tự động sort, còn khi làm việc trên sheet thì bấm nút sau khi hoàn tất:

Mã:
Sub MultiSort()
    Dim WS As Worksheet
    Set WS = Worksheets([COLOR=#ff0000]"Sheet1"[/COLOR])
    Dim eRow As Long, fRow As Long
   [COLOR=#0000ff] ''Hàng đầu tiên của bảng cần sort:[/COLOR]
    fRow = [COLOR=#ff0000]8[/COLOR]
    With WS
       [COLOR=#0000ff] ''Hàng cuối cùng của bảng, tự động tính:[/COLOR]
        eRow = .Range("[COLOR=#ff0000]D[/COLOR]" & Rows.Count).End(xlUp).Row
        .Sort.SortFields.Clear
        .Sort.SortFields.Add Key:=.Range("[COLOR=#ff0000]E1[/COLOR]"), _
            SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
        .Sort.SortFields.Add Key:=.Range("[COLOR=#ff0000]F1[/COLOR]"), _
            SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
        .Sort.SortFields.Add Key:=.Range("[COLOR=#ff0000]G1[/COLOR]"), _
            SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
        .Sort.SortFields.Add Key:=.Range("[COLOR=#ff0000]H1[/COLOR]"), _
            SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
        .Sort.SortFields.Add Key:=.Range("[COLOR=#ff0000]I1[/COLOR]"), _
            SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
        With .Sort
           [COLOR=#0000ff] ''Ghi từ cột đến cột nào của bảng cần sort:[/COLOR]
            .SetRange WS.Range("[COLOR=#ff0000]D[/COLOR]" & fRow & ":[COLOR=#ff0000]I[/COLOR]" & eRow)
           [COLOR=#0000ff] ''Có tiêu đề hay không tiêu đề:[/COLOR]
            .Header = xlYes [COLOR=#0000ff]'xlNo[/COLOR]
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    End With
End Sub

Như thế, nếu bạn có thêm cột cần sắp xếp thì bạn lại copy dòng này xuống dưới là xong:

Mã:
        .Sort.SortFields.Add Key:=.Range("[COLOR=#FF0000]E1[/COLOR]"), _
            SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal

Và đổi E thành tên cột cần sort đó (lưu ý, dù bảng cần sort nó ở hàng 8 hay hàng nào đi chăng nữa ta cũng ghi là E1).

Những gì màu đỏ trong code tôi gửi lên là cái mà bạn thay thế vào bảng thực tế.
 

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom