Sam có một số lượng lớn địa chỉ trong một trang tính. Tại những địa chỉ đó, anh ta cần đảm bảo rằng tất cả các hướng la bàn (NE, SE, NW và SW)

đều là chữ hoa. Sẽ rất hữu ích nếu Sam có thể tìm ra cách thay đổi bất kỳ hướng nào trong số các hướng viết thường (hoặc viết hoa hỗn hợp) này chỉ xuất hiện ở cuối ô với các đối tác viết hoa của chúng. Anh ta không thể chỉ tìm kiếm một khoảng trống theo sau là “ne”, vì điều đó sẽ thay đổi Newton thành NEwton, vì vậy anh ta tự hỏi làm thế nào anh ta có thể đảm bảo rằng sự thay thế chỉ xảy ra khi các chữ cái xuất hiện ở cuối ô.

Không có cách nào để hoàn thành tác vụ này bằng cách sử dụng các công cụ Tìm và Thay thế trong Excel. Điều đó có nghĩa là bạn cần sử dụng công thức hoặc macro để thực hiện tác vụ. Công thức có thể được sử dụng để đảm bảo rằng hai ký tự cuối cùng của ô là chữ hoa:

=LEFT(A1,LEN(A1)-2) & UPPER(RIGHT(A1,2))

Tuy nhiên, vấn đề với một công thức như vậy là nó không phân biệt đối xử. Miễn là bất kỳ ô nào mà nó được sử dụng có hướng la bàn là hai ký tự cuối cùng của nó, thì không có vấn đề gì. Nhưng nếu một số ô không có hướng la bàn, thì bạn sẽ gặp vấn đề rất nhanh. Trong trường hợp đó, bạn cần kiểm tra công thức các ký tự cuối cùng:

=IF(LOWER(RIGHT(A1,3))=" ne", LEFT(A1,LEN(A1)-2) & "NE", IF(LOWER(RIGHT(A1,3))=" se", LEFT(A1,LEN(A1)-2) & "SE", IF(LOWER(RIGHT(A1,3))=" nw", LEFT(A1,LEN(A1)-2) & "NW", IF(LOWER(RIGHT(A1,3))=" sw", LEFT(A1,LEN(A1)-2) & "SW", A1))))

Công thức này kiểm tra ba ký tự cuối cùng để xem liệu chúng có phải là một khoảng trắng được theo sau bởi ne, se, nw hoặc sw hay không. Nếu đúng như vậy thì hai ký tự cuối cùng đó được viết hoa. Công thức có thể được rút ngắn một chút nếu bạn tiếp cận nó theo cách khác:

=IF(OR(LOWER(RIGHT(A1,3))=" ne", LOWER(RIGHT(A1,3))=" se", LOWER(RIGHT(A1,3))=" nw", LOWER(RIGHT(A1,3))=" sw"), LEFT(A1,LEN(A1)-2) & UPPER(RIGHT(A1,2)), A1)

Nếu bạn không muốn sử dụng công thức, bạn có thể dễ dàng tạo một macro để thực hiện việc kiểm tra và chuyển đổi cho bạn:

Sub CapDirections()

For Each RCell In Selection         CText = UCase(Right(RCell.Value, 3))

If CText = " NE" Or CText = " SE" _           Or CText = " SW" Or CText = " NW" Then             RCell.Value = Left(RCell.Value, _               Len(RCell.Value) - 3) + CText         End If     Next End Sub

Để sử dụng macro, chỉ cần chọn các ô chứa địa chỉ, sau đó chạy nó. Nó kiểm tra xem một trong bốn điểm la bàn có ở cuối giá trị ô hay không và nếu đúng thì nó đảm bảo rằng hướng la bàn là chữ hoa.

Bạn nên lưu ý rằng các giải pháp này chỉ dựa trên bốn hướng la bàn có thể có trong địa chỉ của bạn. Nếu địa chỉ của bạn có hướng la bàn rộng hơn (như N hoặc SSE) thì bạn chắc chắn sẽ muốn sử dụng giải pháp dựa trên macro vì việc kiểm tra nhanh chóng trở nên rất phức tạp đối với một công thức.

_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 (9745) á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: