Mục lục
Trong hướng dẫn này, bạn sẽ tìm hiểu 3 cách khác nhau để đánh dấu động hàng và cột của ô đã chọn trong Excel.
Khi xem một trang tính lớn trong thời gian dài, bạn cuối cùng có thể mất dấu con trỏ của bạn ở đâu và bạn đang xem dữ liệu nào. Để biết chính xác bạn đang ở đâu vào bất kỳ lúc nào, hãy yêu cầu Excel tự động tô sáng hàng và cột đang hoạt động cho bạn! Đương nhiên, phần tô sáng phải động và thay đổi mỗi khi bạn chọn một ô khác. Về cơ bản, đây là những gì chúng tôi đang hướng tới để đạt được:
Tự động tô sáng hàng và cột của ô đã chọn bằng VBA
Điều này ví dụ cho thấy cách bạn có thể tô sáng một cột và hàng đang hoạt động theo lập trình bằng VBA. Đối với điều này, chúng tôi sẽ sử dụng sự kiện SelectionChange của đối tượng Worksheet .
Trước tiên, bạn xóa màu nền của tất cả các ô trên trang tính bằng cách đặt ColorIndex thành 0. Sau đó, bạn đánh dấu toàn bộ hàng và cột của ô hiện hoạt bằng cách đặt thuộc tính ColorIndex của chúng thành số chỉ mục cho màu mong muốn.
Private Sub Worksheet_SelectionChange ( ByVal Target As Range) Nếu Target.Cells.Count > 1 Then Exit Sub Application.ScreenUpdating = False 'Xóa màu tất cả các ô Cells.Interior.ColorIndex = 0 With Target' Tô sáng hàng và cột của ô đã chọn .EntireRow.Interior.ColorIndex = 38.EntireColumn.Interior.ColorIndex = 24 End With Application.ScreenUpdating = True End SubTùy chỉnh mã
Nếu bạn muốn tùy chỉnh mã theo nhu cầu của mình, những mẹo nhỏ này có thể hữu ích:
- Mã mẫu của chúng tôi sử dụng hai màu khác nhau được thể hiện trong gif ở trên - chỉ số màu 38 cho hàng và 24 cho cột. Để thay đổi màu tô sáng , chỉ cần thay thế những màu đó bằng bất kỳ mã ColorIndex nào bạn chọn.
- Để hàng và cột được tô màu theo cùng một cách , hãy sử dụng cùng một cách số chỉ mục màu cho cả hai.
- Để chỉ đánh dấu hàng đang hoạt động , hãy xóa hoặc nhận xét dòng này: .EntireColumn.Interior.ColorIndex = 24
- Để chỉ đánh dấu cột hoạt động , hãy xóa hoặc ghi chú dòng này: .EntireRow.Interior.ColorIndex = 38
Cách thêm mã vào trang tính của bạn
Để mã được thực thi âm thầm trong nền của một trang tính cụ thể, bạn cần chèn mã đó vào cửa sổ mã của trang tính đó, không phải trong mô-đun thông thường. Để hoàn thành, hãy thực hiện các bước sau:
- Trong sổ làm việc của bạn, nhấn Alt + F11 để đến trình soạn thảo VBA.
- Trong Project Explorer ở bên trái, bạn' Bạn sẽ thấy danh sách tất cả các sổ làm việc đang mở và các trang tính của chúng. Nếu bạn không nhìn thấy nó, hãy sử dụng phím tắt Ctrl + R để hiển thị cửa sổ Project Explorer.
- Tìm sổ làm việc đích. Trong Microsoft ExcelObjects , nhấp đúp vào trang tính mà bạn muốn áp dụng tô sáng. Trong ví dụ này, đó là Trang tính 1 .
- Trong cửa sổ Mã ở bên phải, hãy dán mã ở trên.
- Lưu tệp của bạn dưới dạng Sổ làm việc hỗ trợ Macro (.xlsm).
Ưu điểm : mọi thứ được thực hiện ở phần phụ trợ; không cần điều chỉnh/tùy chỉnh về phía người dùng; hoạt động trong tất cả các phiên bản Excel.
Nhược điểm : có hai nhược điểm cơ bản khiến kỹ thuật này không thể áp dụng được trong một số trường hợp nhất định:
- Mã xóa nền colors của tất cả các ô trong trang tính. Nếu bạn có bất kỳ ô màu nào, không sử dụng giải pháp này vì định dạng tùy chỉnh của bạn sẽ bị mất.
- Việc thực thi mã này chặn chức năng hoàn tác trên trang tính và bạn sẽ không thể hoàn tác một hành động sai bằng cách nhấn Ctrl + Z .
Đánh dấu hàng và cột đang hoạt động mà không cần VBA
Cách tốt nhất bạn có thể làm để đánh dấu hàng và cột đã chọn và /hoặc cột không có VBA là định dạng có điều kiện của Excel. Để thiết lập, hãy thực hiện các bước sau:
- Chọn tập dữ liệu của bạn để thực hiện đánh dấu.
- Trên tab Trang chủ , trong Kiểu , nhấp vào Quy tắc mới .
- Trong hộp thoại Quy tắc định dạng mới , chọn Sử dụng công thức để xác định các ô cần định dạng .
- Trong Định dạng giá trị nơi công thức nàyhộp true , hãy nhập một trong các công thức sau:
Để tô sáng hàng đang hoạt động :
=CELL("row")=ROW()
Để tô sáng cột đang hoạt động :
=CELL("col")=COLUMN()
Để đánh dấu hàng và cột đang hoạt động :
=OR(CELL("row")=ROW(), CELL("col")= COLUMN())
Tất cả các công thức sử dụng hàm CELL để trả về số hàng/cột của ô đã chọn.
- Nhấp vào nút Định dạng , chuyển sang tab Điền và chọn màu bạn thích.
- Nhấp OK hai lần để đóng cả hai cửa sổ hộp thoại.
Nếu bạn cảm thấy mình cần hướng dẫn chi tiết hơn, vui lòng xem Cách tạo quy tắc định dạng có điều kiện dựa trên công thức.
Đối với ví dụ này, chúng tôi đã chọn OR công thức để tô cả cột và hàng cùng màu. Cách đó tốn ít công sức hơn và phù hợp với hầu hết các trường hợp.
Thật không may, giải pháp này không hay bằng giải pháp VBA vì nó yêu cầu tính toán lại trang tính theo cách thủ công (bằng cách nhấn phím F9). Theo mặc định, Excel chỉ tính toán lại một trang tính sau khi nhập dữ liệu mới hoặc chỉnh sửa dữ liệu hiện có chứ không phải khi lựa chọn thay đổi. Vì vậy, bạn chọn một ô khác - không có gì xảy ra. Nhấn F9 - trang tính được làm mới, công thức được tính toán lại và tô sáng được cập nhật.
Để trang tính được tự động tính toán lại bất cứ khi nào có sự kiện SelectionChange xảy ra, bạn có thể đặt mã VBA đơn giản này vào mô-đun mã của trang mục tiêu của mình như được giải thích trongví dụ trước:
Private Sub Worksheet_SelectionChange( ByVal Target As Range) Target.Calculate End SubMã này buộc phạm vi/ô đã chọn phải tính toán lại, từ đó buộc hàm CELL phải cập nhật và phản ánh định dạng có điều kiện thay đổi.
Ưu điểm : không giống như phương pháp trước, phương pháp này không ảnh hưởng đến định dạng hiện có mà bạn đã áp dụng thủ công.
Nhược điểm : có thể làm giảm hiệu suất của Excel.
- Để định dạng có điều kiện hoạt động, bạn cần buộc Excel tính toán lại công thức trên mỗi lần thay đổi lựa chọn (theo cách thủ công bằng phím F9 hoặc tự động bằng VBA). Tính toán lại bắt buộc có thể làm chậm Excel của bạn. Do mã của chúng tôi tính toán lại lựa chọn chứ không phải toàn bộ trang tính nên hiệu ứng tiêu cực có thể chỉ đáng chú ý trên các sổ làm việc thực sự lớn và phức tạp.
- Vì hàm CELL có sẵn trong Excel 2007 trở lên nên phương pháp này sẽ không hiệu quả' không hoạt động trong các phiên bản cũ hơn.
Đánh dấu hàng và cột đã chọn bằng cách sử dụng định dạng có điều kiện và VBA
Trong trường hợp phương pháp trước đó làm chậm sổ làm việc của bạn một cách đáng kể, bạn có thể tiếp cận tác vụ theo cách khác - thay vào đó tính toán lại một trang tính khi người dùng di chuyển, lấy số hàng/cột đang hoạt động với sự trợ giúp của VBA, sau đó cung cấp số đó cho hàm ROW() hoặc COLUMN() bằng cách sử dụng các công thức định dạng có điều kiện.
Để hoàn thành việc này,đây là các bước bạn cần làm theo:
- Thêm một trang tính trống mới vào sổ làm việc của bạn và đặt tên là Trang tính trợ giúp . Mục đích duy nhất của trang tính này là lưu trữ hai số đại diện cho hàng và cột chứa ô đã chọn, vì vậy bạn có thể ẩn trang tính một cách an toàn sau này.
- Chèn VBA bên dưới vào cửa sổ mã của trang tính nơi bạn muốn thực hiện đánh dấu. Để biết hướng dẫn chi tiết, vui lòng tham khảo ví dụ đầu tiên của chúng tôi. Bảng phụ riêng tư_SelectionChange( ByVal Target As Range) Application.ScreenUpdating = False Worksheets( "Helper Sheet" ).Cells(2, 1) = Target.Row Worksheets( "Helper Sheet" ).Cells(2, 2) = Target.Column Application.ScreenUpdating = True End Sub
Đoạn mã trên đặt tọa độ của hàng và cột hiện hoạt vào trang tính có tên "Trang tính trợ giúp". Nếu bạn đã đặt tên trang tính khác ở bước 1, hãy thay đổi tên trang tính trong mã cho phù hợp. Số hàng được ghi vào A2 và số cột vào B2.
- Trong trang tính mục tiêu của bạn, hãy chọn toàn bộ tập dữ liệu và tạo quy tắc định dạng có điều kiện bằng các công thức bên dưới. Hướng dẫn từng bước được cung cấp trong ví dụ trên.
Và bây giờ, hãy xem chi tiết ba trường hợp sử dụng chính.
Cách đánh dấu hàng đang hoạt động
Để đánh dấu hàng nơi con trỏ của bạn được đặt tại thời điểm này, hãy thiết lập quy tắc định dạng có điều kiện với quy tắc nàycông thức:
=ROW()='Helper Sheet'!$A$2
Kết quả là người dùng có thể thấy rõ hàng nào hiện đang được chọn:
Cách đánh dấu cột đang hoạt động
Để đánh dấu cột đã chọn, hãy nhập số cột vào hàm COLUMN bằng công thức sau:
=COLUMN()='Helper Sheet'!$B$2
Giờ đây, một cột được đánh dấu cho phép bạn đọc dữ liệu dọc một cách thoải mái và dễ dàng tập trung hoàn toàn vào cột đó.
Cách đánh dấu hàng và cột đang hoạt động
Để cả hàng và cột đã chọn tự động được tô cùng một màu, hãy kết hợp các hàm ROW() và COLUMN() thành một công thức:
=OR(ROW()='Helper Sheet'!$A$2, COLUMN()='Helper Sheet'!$B$2)
Dữ liệu liên quan được tập trung ngay lập tức, vì vậy bạn có thể tránh đọc sai.
Ưu điểm : hiệu suất được tối ưu hóa; hoạt động trong tất cả các phiên bản Excel
Nhược điểm : thiết lập lâu nhất
Đó là cách đánh dấu cột và hàng của ô đã chọn trong Excel. Tôi cảm ơn bạn đã đọc và mong được gặp bạn trên blog của chúng tôi vào tuần tới!
Sách bài tập thực hành để tải xuống
Đánh dấu hàng và cột đang hoạt động (tệp .xlsm)