Pat tự hỏi liệu có cách nào để tự động sắp xếp mỗi khi cô ấy thêm dữ liệu mới vào trang tính hay không. Pat nghĩ rằng sẽ rất tuyệt, chẳng hạn, khi cô ấy thêm một cái tên mới vào danh sách các tên mà các tên đó được tự động sắp xếp để luôn có thứ tự.

Cách duy nhất có thể thực hiện điều này là sử dụng macro được kích hoạt bất cứ khi nào có điều gì đó mới được nhập vào trang tính. Ví dụ: bạn có thể thêm macro vào mã cho trang tính được kích hoạt khi một thứ gì đó trong trang tính thay đổi. (Bạn có thể xem cửa sổ mã bằng cách nhấp chuột phải vào tab trang tính và chọn Mã Chế độ xem từ trình đơn Ngữ cảnh kết quả.) Sau đây là ví dụ về một macro đơn giản như vậy:

Private Sub Worksheet_Change(ByVal Target As Range)

On Error Resume Next     Range("A1").Sort Key1:=Range("A2"), _       Order1:=xlAscending, Header:=xlYes, _       OrderCustom:=1, MatchCase:=False, _       Orientation:=xlTopToBottom End Sub

Macro giả định rằng bạn muốn sắp xếp dữ liệu trong cột A và có tiêu đề trong ô A1. Nếu các tên nằm trong một cột khác, chỉ cần thay đổi tham chiếu ô A2 thành một cột khác, chẳng hạn như B2, ​​C2, v.v.

Tất nhiên, việc phân loại bất cứ lúc nào mà bất kỳ thay đổi nào được thực hiện có thể gây khó chịu.

Bạn có thể muốn giới hạn thời điểm sắp xếp được thực hiện để nó chỉ xảy ra khi các thay đổi được thực hiện đối với một phần dữ liệu cụ thể của bạn. Phiên bản sau của macro chỉ sắp xếp dữ liệu khi có thay đổi trong cột A.

Private Sub Worksheet_Change(ByVal Target As Range)

On Error Resume Next     If Not Intersect(Target, Range("A:A")) Is Nothing Then         Range("A1").Sort Key1:=Range("A2"), _           Order1:=xlAscending, Header:=xlYes, _           OrderCustom:=1, MatchCase:=False, _           Orientation:=xlTopToBottom     End If End Sub

Có một số hạn chế khi sử dụng macro để tự động sắp xếp dữ liệu của bạn. Đầu tiên, vì bạn đang sử dụng macro để sắp xếp, thao tác về cơ bản là “cuối cùng”. Nói cách khác, sau khi sắp xếp, bạn không thể sử dụng Ctrl + Z để hoàn tác thao tác.

Một hạn chế thứ hai là việc nhập dữ liệu có thể trở nên hơi khó chịu.

Ví dụ: nếu bạn sử dụng bất kỳ macro nào ở trên và bạn bắt đầu đặt tên vào trang tính, chúng sẽ được sắp xếp ngay sau khi bạn hoàn thành những gì trong cột A. Nếu dữ liệu của bạn sử dụng năm cột và bạn bắt đầu nhập ở hàng 15 , ngay sau khi bạn nhập xong tên vào cột A (và trước khi bạn nhập dữ liệu vào cột B đến E), dữ liệu của bạn sẽ được sắp xếp theo thứ tự thích hợp. Điều này có nghĩa là bạn sẽ cần phải tìm nơi nó đã được di chuyển trong sắp xếp, chọn ô thích hợp trong cột B, sau đó nhập phần còn lại của dữ liệu cho bản ghi. Tất nhiên, cách giải quyết vấn đề này là thêm dữ liệu của bạn theo một thứ tự không tự nhiên — chỉ cần đảm bảo rằng tên trong cột A là tên cuối cùng bạn nhập cho bản ghi.

_Lưu ý: _

Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên trang ExcelTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.

ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.

Mẹo này (9005) áp dụng cho Microsoft Excel 97, 2000, 2002 và 2003. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện ribbon của Excel (Excel 2007 trở lên) tại đây: