Note: The other languages of the website are Google-translated. Back to English

Làm cách nào để tự động sắp xếp cột theo giá trị trong Excel?

Ví dụ, bạn có một bảng mua hàng như ảnh chụp màn hình bên dưới. Bây giờ bạn muốn cột Giá được sắp xếp tự động khi bạn nhập số / giá mới vào cột này, bạn có thể giải quyết nó như thế nào? Ở đây tôi giới thiệu một macro VBA để giúp bạn tự động sắp xếp một cột cụ thể theo giá trị trong Excel.

Tự động sắp xếp cột theo giá trị với VBA


Tự động sắp xếp cột theo giá trị với VBA

Macro VBA này sẽ tự động sắp xếp tất cả dữ liệu trong một cột cụ thể ngay sau khi bạn nhập dữ liệu mới hoặc thay đổi giá trị trong cột trong Excel.

1. Nhấp chuột phải vào tên trang tính hiện tại trong Thanh tab trang tính, và sau đó nhấp vào Mã Chế độ xem từ menu chuột phải.

2. Trong hộp thoại mở Microsoft Visual Basic for Application, hãy dán mã macro VBA sau vào cửa sổ đang mở.

VBA: Tự động sắp xếp cột trong Excel

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range("B:B")) Is Nothing Then
Range("B1").Sort Key1:=Range("B2"), _
Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom
End If
End Sub

Chú thích:
1) Trong mã vba ở trên, B: B có nghĩa là nó sẽ tự động sắp xếp Cột B, B1 là ô đầu tiên trong Cột B, B2 là ô thứ hai trong Cột B và bạn có thể thay đổi chúng dựa trên nhu cầu của mình.
2) Đoạn mã Tiêu đề: = xlYes ở hàng thứ 5 cho Excel biết rằng phạm vi bạn sẽ sắp xếp có tiêu đề, do đó hàng đầu tiên của phạm vi sẽ không được đưa vào khi sắp xếp. Nếu không có tiêu đề, vui lòng thay đổi nó thành Tiêu đề: = xlNo; và thay đổi Key1: = Phạm vi ("B2") ở hàng thứ 4 để Key1: = Phạm vi ("B1").

3. Sau đó, quay trở lại trang tính, khi bạn nhập một số mới vào cột Giá hoặc sửa đổi bất kỳ giá hiện có nào, cột Giá sẽ tự động được sắp xếp theo thứ tự tăng dần.

Chú thích: Khi nhập số mới vào cột Giá, bạn phải nhập số vào ô trống đầu tiên bên dưới các số ban đầu. Nếu có các ô trống giữa số mới nhập và các số gốc cũng như các ô trống giữa các số ban đầu, cột này sẽ không được sắp xếp tự động.


Demo: Tự động sắp xếp cột theo giá trị với VBA trong Excel


Kutools cho Excel bao gồm hơn 300 công cụ tiện dụng cho Excel, miễn phí dùng thử không giới hạn trong 30 ngày. Tải xuống và dùng thử miễn phí ngay bây giờ!

Dễ dàng sắp xếp theo tần suất xuất hiện trong Excel

Kutools cho Excel's Sắp xếp nâng cao tiện ích hỗ trợ sắp xếp dữ liệu theo độ dài văn bản, họ, giá trị tuyệt đối, tần suất, ... trong Excel một cách nhanh chóng.


sắp xếp quảng cáo theo tần suất 2


Các công cụ năng suất văn phòng tốt nhất

Kutools cho Excel giải quyết hầu hết các vấn đề của bạn và tăng 80% năng suất của bạn

  • Tái sử dụng: Chèn nhanh công thức phức tạp, biểu đồ và bất cứ thứ gì bạn đã sử dụng trước đây; Mã hóa ô với mật khẩu; Tạo danh sách gửi thư và gửi email ...
  • Thanh siêu công thức (dễ dàng chỉnh sửa nhiều dòng văn bản và công thức); Bố cục đọc (dễ dàng đọc và chỉnh sửa số lượng ô lớn); Dán vào Dải ô đã Lọchữu ích. Cảm ơn !
  • Hợp nhất các ô / hàng / cột mà không làm mất dữ liệu; Nội dung phân chia ô; Kết hợp các hàng / cột trùng lặp... Ngăn chặn các ô trùng lặp; So sánh các dãyhữu ích. Cảm ơn !
  • Chọn trùng lặp hoặc duy nhất Hàng; Chọn hàng trống (tất cả các ô đều trống); Tìm siêu và Tìm mờ trong Nhiều Sổ làm việc; Chọn ngẫu nhiên ...
  • Bản sao chính xác Nhiều ô mà không thay đổi tham chiếu công thức; Tự động tạo tài liệu tham khảo sang Nhiều Trang tính; Chèn Bullets, Hộp kiểm và hơn thế nữa ...
  • Trích xuất văn bản, Thêm Văn bản, Xóa theo Vị trí, Xóa không gian; Tạo và In Tổng số phân trang; Chuyển đổi giữa nội dung ô và nhận xéthữu ích. Cảm ơn !
  • Siêu lọc (lưu và áp dụng các lược đồ lọc cho các trang tính khác); Sắp xếp nâng cao theo tháng / tuần / ngày, tần suất và hơn thế nữa; Bộ lọc đặc biệt bằng cách in đậm, in nghiêng ...
  • Kết hợp Workbook và WorkSheets; Hợp nhất các bảng dựa trên các cột chính; Chia dữ liệu thành nhiều trang tính; Chuyển đổi hàng loạt xls, xlsx và PDFhữu ích. Cảm ơn !
  • Hơn 300 tính năng mạnh mẽ. Hỗ trợ Office / Excel 2007-2021 và 365. Hỗ trợ tất cả các ngôn ngữ. Dễ dàng triển khai trong doanh nghiệp hoặc tổ chức của bạn. Đầy đủ tính năng Dùng thử miễn phí 30 ngày. Bảo đảm hoàn lại tiền trong 60 ngày.
tab kte 201905

Tab Office mang lại giao diện Tab cho Office và giúp công việc của bạn trở nên dễ dàng hơn nhiều

  • Cho phép chỉnh sửa và đọc theo thẻ trong Word, Excel, PowerPoint, Publisher, Access, Visio và Project.
  • Mở và tạo nhiều tài liệu trong các tab mới của cùng một cửa sổ, thay vì trong các cửa sổ mới.
  • Tăng 50% năng suất của bạn và giảm hàng trăm cú nhấp chuột cho bạn mỗi ngày!
officetab dưới cùng
Nhận xét (37)
Xếp hạng 5 trong 5 · xếp hạng 1
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Đẹp, đẹp, đẹp, cảm ơn bạn rất nhiều. Tôi sẽ không bao giờ có thể tìm ra điều này một mình và tôi thực sự đánh giá cao bạn chia sẻ điều này !!!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Tôi đang tìm cách sắp xếp tự động tương tự khi nhập dữ liệu cho biểu đồ excel của mình. Ví dụ, khó có thể hiểu chi tiết những gì bạn đã nhập ở đây. Tôi thực sự sẽ đánh giá cao nó nếu ai đó ở đây đã làm ví dụ trên có thể giúp tôi sắp xếp trang tính của mình để nó hoạt động như vậy. Tôi có một biểu đồ F1 hiển thị những người chiến thắng và số điểm, và tôi muốn nó để khi điểm được nhập vào bên cạnh tên của tay đua cho một cuộc đua cụ thể để tổng số ở phía bên phải của trang tính theo thứ tự số, KHÔNG HỖN HỢP KẾT QUẢ với các trình điều khiển khác. Có vẻ như tôi không thể đặt trên thư này một tệp đính kèm biểu đồ của tôi, vì vậy nếu bạn có thể thay đổi biểu đồ của tôi cho tôi để điều này xảy ra, tôi muốn nghe ý kiến ​​của bạn. Tôi có thể gửi nó qua email cho bạn. Nếu bạn có thể trợ giúp việc này, vui lòng gửi email cho tôi theo địa chỉ Lordmarshall2013@gmail.com và trong dòng CHỦ ĐỀ, vui lòng viết trợ giúp F1 Excel và sẽ trả lời bằng biểu đồ đính kèm cho bạn. Cảm ơn trước vì bất kỳ sự giúp đỡ nào bạn có thể cung cấp.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Điều đó thật tuyệt. Điều này đã được giúp đỡ rất nhiều.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Giả sử tôi cần tự động sắp xếp cột "C" và cột "D". Làm cách nào để sửa đổi mã để sắp xếp cả hai cột?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Weet niet của dit je inmiddels gelukt là, maar voor diegene die het ook nog zouden willen...
Trong de Sub kun je gewoon meerdere keren het Câu lệnh NẾU được viết ra, và nó không bao giờ khác.
Nó kun je uiteraard net zo ver uitbreiden als je héo. Als je dit los van elkaar héo doen met bepaalde waardes omdat je bijvoorbeeld met gegevensvalidatie werkt, và moet je meerdere tabellen doen, omdat die waardes anders met elkaar mee verspringen. (Tôi đã gật đầu với việc tôi mất đi các xác thực hợp lệ, tôi đã có thêm tabblad aangemaakt waar alle gegevensvalidatielijsten staan)



Private Sub Worksheet_Change (ByVal Target As Range)
On Error Resume Next

Nếu không giao nhau(Target, Range("A:A")) thì không có gì
Phạm vi("A1").Khóa sắp xếp1:=Phạm vi("A2"), _
Order1: = xlAscending, Header: = xlYes, _
OrderCustom: = 1, MatchCase: = False, _
Định hướng: = xlTopToBottom
Cuối Nếu

Nếu không Giao nhau (Mục tiêu, Phạm vi ("B: B")) thì Không có gì
Phạm vi("B1").Khóa sắp xếp1:=Phạm vi("B2"), _
Order1: = xlAscending, Header: = xlYes, _
OrderCustom: = 1, MatchCase: = False, _
Định hướng: = xlTopToBottom
Cuối Nếu

Nếu không giao nhau(Target, Range("C:C")) thì không có gì
Phạm vi("C1").Khóa sắp xếp1:=Phạm vi("C2"), _
Order1: = xlAscending, Header: = xlYes, _
OrderCustom: = 1, MatchCase: = False, _
Định hướng: = xlTopToBottom
Cuối Nếu

If Not Intersect(Target, Range("D:D")) Is nothing Then
Phạm vi("D1").Khóa sắp xếp1:=Phạm vi("D2"), _
Order1: = xlAscending, Header: = xlYes, _
OrderCustom: = 1, MatchCase: = False, _
Định hướng: = xlTopToBottom
Cuối Nếu

End Sub
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào. Thủ thuật xuất sắc, cảm ơn bạn rất nhiều. Trong tệp của tôi, tôi có thông tin quan trọng mà tôi cần xem trong các ô A1 và A2. Do đó, tôi đã ổn định tất cả các ô và giá trị của tôi bắt đầu từ A3 đến A500. Khi tôi thực thi vba này, thông tin của tôi trong ô A2 chuyển sang ô 501. Làm cách nào để bắt đầu có dạng ô A3? Cảm ơn bạn trước!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Hàng đầu tiên bị loại trừ để sắp xếp
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Tôi đã có cùng một vấn đề và tôi đã tìm ra lý do tại sao. Chuyển đến dòng 5, (Order1: = xlAscending, Header: = xlYes, _). Tập lệnh cho Excel biết ô đầu tiên là tiêu đề và do đó, nó sẽ bỏ qua nó khi quá trình sắp xếp diễn ra. Nếu bạn muốn bao gồm hàng đầu tiên, hãy thay đổi nó thành dòng sau:


Order1: = xlAscending, Header: = xlNo, _
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Đã sao chép mã chính xác vào trang tính của tôi trong VBA. Nhưng không có gì đang xảy ra, tôi đang thiếu một cái gì đó? Đã làm chính xác những gì bạn đã làm.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
CẢM ƠN BẠN!!!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Cảm ơn về mã và logic. Logic ở trên không hoạt động khi chúng ta đang xem xét phạm vi ô lớn hơn như Intersect (Target, Range ("B: B, C: C, D: D")). Tôi muốn nếu có thay đổi trong bất kỳ ô nào trong Cột (B, C hoặc D), cần phải thực hiện việc sắp xếp lại.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Bất kỳ ai biết làm thế nào để thiết lập một số tự động nối tiếp. cho một bảng tính excel. Số phải loại trừ tất cả các tiêu đề phụ và tiêu đề phụ, đồng thời phải tự động sắp xếp lại sau khi thêm hoặc xóa một hàng.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chào,
Kutools cho Excel cung cấp tính năng Chèn số thứ tự, có thể chèn các giá trị duy nhất và liên tiếp bất kể bạn chèn bao nhiêu lần.
Ví dụ, lần đầu tiên bạn chèn 1,2,3,4;
Lần thứ hai tính năng này sẽ chèn 5,6,7,8,9,10
Lần thứ ba tính năng này sẽ chèn 11,12,…
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Mặc dù đây là một đoạn mã tuyệt vời, nhưng tôi muốn biết liệu có ai có thể giúp tôi làm cho nó đi từ tăng dần đến giảm dần không? Nói cách khác, tôi đang tìm kiếm nó là số lớn nhất ở trên cùng với số thấp nhất ở dưới cùng
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Thay đổi (Order1: = xlAscending, Header: = xlYes,) To (Order1: = xlDescending, Header: = xlYes,)
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào, tôi là người dùng Excel trung cấp. Tôi đang tự hỏi liệu ai đó có thể giúp hướng dẫn tôi những gì tôi đang cố gắng hoàn thành. Đây là những gì tôi đang cố gắng làm: Tự động sắp xếp theo thứ tự tùy chỉnh.

Một chút về bảng tính của tôi: Tôi có một trang tính (có tên: Sheet1) liệt kê 16 cột (A đến P) và hiện tại là 19 hàng (con số này sẽ tăng lên khi nhiều dữ liệu được nhập vào). Trong cột cuối cùng (cột P), tất cả các ô đều có menu tùy chọn thả xuống (nằm và kéo từ trang hai (có tên là "BackEnd"). Các lựa chọn thả xuống được mã hóa bằng màu sắc (sử dụng quy tắc định dạng có điều kiện)).

Điều tôi hy vọng sẽ làm được: Khi người dùng nhập dữ liệu vào một hàng mới, ngay sau khi họ chọn xong một tùy chọn từ menu thả xuống trong cột P, Excel sẽ tự động sắp xếp hàng mới theo một thứ tự cụ thể. Tôi đã có thể tạo mã VBA để tự động sắp xếp theo thứ tự tăng dần và giảm dần, nhưng tôi không thể tạo mã để tự động sắp xếp dữ liệu theo một thứ tự cụ thể. Thứ tự tôi muốn sắp xếp dữ liệu là:

Không phản hồi
Không quan tâm
Quan tâm
Sàng lọc trước Không đủ tiêu chuẩn:
Đủ điều kiện sàng lọc trước
Đơn đăng ký đang chờ xử lý
Đơn đăng ký được chấp thuận
Đánh giá ban đầu:
Phạm vi công việc:
Đang sửa chữa nhà
Đang chờ:
Hoàn thành
Khác:

Điều này có khả thi không? Bất kỳ trợ giúp được đánh giá cao! Cảm ơn bạn!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chào,

Làm cách nào để bắt đầu macro này sau khi tôi điền tất cả dữ liệu vào cột cụ thể?
Tôi muốn macro danh sách bắt đầu sau khi tôi điền vào các ô trống. Bởi vì khi tôi sử dụng, nó thay đổi vị trí đột ngột.
Tôi cần bắt đầu macro này sau khi điền dữ liệu cuối cùng của cột đó (chính xác là 20 dữ liệu)
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Tôi có thể hỏi nếu có cách nào để sử dụng mã VBA này nếu có một công thức trong cột mà bạn muốn là sắp xếp chính.

nghĩa là nếu A2 = tổng của f2 + g2 + h2 và cột A cần được sắp xếp trên tổng tổng? (Tôi không thể làm cho VBA hoạt động nếu công thức trong ô)

Mọi hỗ trợ sẽ được đánh giá cao vì hy vọng sẽ sử dụng nó cho các cuộc đua xếp hạng khi người chiến thắng là người có tổng số ba giải đua.

Cảm ơn bạn
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
tôi cũng muốn biết giải pháp cho vấn đề Paula. xin vui lòng chia sẻ
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Đối với tôi, nó hoạt động để thay đổi dòng này
Nếu không Giao nhau (Mục tiêu, Phạm vi ("B: B")) thì Không có gì
Tôi nghĩ điều quan trọng là đặt Phạm vi mục tiêu cho các trường thay đổi và giữ nguyên sắp xếp trên dữ liệu với kết quả tổng hợp.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Điều này phù hợp với tôi khi có một công thức trong ô:
Private Sub Worksheet_SelectionChange (ByVal Target As Range) Range ("B1"). Sắp xếp Key1: = Range ("B2"), Order1: = xlAscending, Header: = xlYes, OrderCustom: = 1, MatchCase: = False, Orientation: = xlTopToBottom
End Sub
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Điều này thực sự hữu ích nhưng tôi có 2 hàng tiêu đề (hàng 1 và 2) và khi tôi chạy VBA, nó chiếm hàng thứ hai ở cuối ngày
làm thế nào để tôi ngăn chặn điều này?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chào kerry,

Có một VBA sẽ tự động sắp xếp các ô trong Cột lấy hai ô tiêu đề đầu tiên.

Private Sub Worksheet_Change (ByVal Target As Range)
Làm mờ xIntRC dưới dạng số nguyên
Dim xURg theo phạm vi
On Error Resume Next
Nếu không Giao nhau (Mục tiêu, Phạm vi ("B: B")) thì Không có gì
If Not Intersect (Target, Range ("B1: B2")) Không có gì thì Thoát Sub
Đặt xURg = ActiveSheet.UsedRange
xIntRC = xURg.Rows.count
Range ("B2: B" & xIntRC) .Sort Key1: = Range ("B3"), _
Order1: = xlAscending, Header: = xlYes, _
OrderCustom: = 1, MatchCase: = False, _
Định hướng: = xlTopToBottom
Cuối Nếu
End Sub
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào, tôi không gặp may với mã ngay trên từ "kellytte" để sắp xếp các ô trong Cột bỏ qua hai ô tiêu đề đầu tiên. Ai giúp tôi với? Thanks.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Mã Hithis giải quyết vấn đề của tôi. nhưng tôi cần sắp xếp cột B & với cột này Chỉ thay đổi cột A, không phải tất cả. làm ơn giúp đỡ
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào, nó sắp xếp toàn bộ hàng nhưng tôi có một số liên kết trên các ô vào thư mục cụ thể bị bỏ lại sau khi sắp xếp.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Vì vậy, điều này dường như hoạt động khi dữ liệu được nhập theo cách thủ công nhưng không hoạt động khi nó là một bảng sao chép lại từ một tệp khác .... có cách nào để làm điều đó không?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Cảm ơn tuyệt vời !!!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chào,
Điều này là cực kỳ hữu ích.
Có cách nào để mở rộng công thức để bao gồm nhiều cột không? Ví dụ: để sắp xếp dữ liệu dựa trên các giá trị trên đầu tiên, cột B và sau đó là cột C? Tôi thực sự đánh giá cao bất kỳ giải pháp nào!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chào,
Điều này là cực kỳ hữu ích.
Có cách nào để mở rộng công thức để bao gồm nhiều cột không? Ví dụ: để sắp xếp dữ liệu dựa trên các giá trị trên đầu tiên, cột B và sau đó là cột C?
Tôi thực sự sẽ đánh giá cao bất kỳ giải pháp nào!
Không có bình luận nào được đăng ở đây
Tải thêm
Để lại ý kiến ​​của bạn
Đăng với tư cách khách
×
Đánh giá bài viết này:
0   Nhân vật
Các vị trí được đề xuất

Kết nối với chúng tôi

Bản quyền © 2009 - www.extendoffice.com. | Đã đăng ký Bản quyền. cung cấp bởi ExtendOffice. | BẢN ĐỒ CHI NHÁNH
Microsoft và logo Office là các nhãn hiệu hoặc nhãn hiệu đã đăng ký của Microsoft Corporation tại Hoa Kỳ và / hoặc các quốc gia khác.
Được bảo vệ bởi Sectigo SSL