Giống như nhiều người, Kirk sao chép thông tin vào trang tính Excel bắt nguồn từ những nơi khác. Thông tin mà Kirk sao chép thường là tất cả ở dạng CHỮ HOA, và anh ta muốn chuyển đổi nó thành những gì Excel gọi là “trường hợp thích hợp” (chỉ chữ cái đầu tiên của mỗi từ được viết hoa). Vấn đề là, hàm trang tính PROPER, thực hiện chuyển đổi, không chú ý đến các từ mà nó đang viết hoa. Vì vậy, các từ như a, an, in, and, the và with đều được giới hạn đầu tiên. Kirk không muốn những từ đó (và có lẽ một số từ khác) được viết hoa.

Có một số cách bạn có thể tiếp cận vấn đề này. Một là sử dụng một công thức khá dài để thực hiện chuyển đổi:

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE( SUBSTITUTE(SUBSTITUTE(PROPER($B$13);" A ";" a "); " An ";" an ");" In ";" in ");" And ";" and "); " The ";" the ");" With ";" with ")

Hãy nhớ rằng đây là một công thức duy nhất. Nó thực hiện chuyển đổi trường hợp, nhưng sau đó thay thế các từ viết thường mong muốn (a, an, in, and, the, with). Mặc dù điều này tương đối dễ dàng, nhưng tiện ích của công thức trở nên hạn chế khi bạn tăng số lượng từ mà các thay thế cần được thực hiện.

Có lẽ một cách tiếp cận tốt hơn là sử dụng macro chức năng do người dùng xác định để thực hiện chuyển đổi trường hợp cho bạn. Hàm sau kiểm tra một số từ phổ biến không được viết hoa đầu tiên, đảm bảo rằng chúng là chữ thường.

Function MyProper(str As String)

Dim vExclude     Dim i As Integer     vExclude = Array("a", "an", "in", "and", _       "the", "with", "is", "at")



Application.Volatile     str = StrConv(str, vbProperCase)

For i = LBound(vExclude) To UBound(vExclude)

str = Application.WorksheetFunction. _           Substitute(str, " " & _           StrConv(vExclude(i), vbProperCase) _           & " ", " " & vExclude(i) & " ")

Next     MyProper = str End Function

Các từ có thể được thêm vào mảng và mã tự động cảm nhận các bổ sung và kiểm tra các từ được thêm đó. Cũng lưu ý rằng mã thêm một khoảng trắng trước và sau mỗi từ trong mảng khi nó thực hiện việc kiểm tra. Điều này giúp bạn không có mã thực hiện thay đổi đối với các từ từng phần (chẳng hạn như “và” nằm trong “stand”) hoặc các từ ở đầu câu. Bạn có thể sử dụng hàm trong trang tính theo cách này:

=MyProper(B7)

Cách sử dụng này trả về văn bản đã sửa đổi mà không cần điều chỉnh văn bản gốc trong B7.

Nếu muốn, bạn có thể sử dụng một hàm lấy danh sách các từ của nó từ một phạm vi được đặt tên trong sổ làm việc. Hàm sau sử dụng một dải ô có tên MyList, với một từ duy nhất trên mỗi ô. Nó giả định rằng danh sách này nằm trong một trang tính có tên WordList.

Function ProperSpecial(cX As Range)

' rng = target Cell

Dim c As Range     Dim sTemp As String

sTemp = Application.WorksheetFunction.Proper(cX.Value)

For Each c In Worksheets("WordList").Range("MyList")

sTemp = Application.WorksheetFunction.Substitute( _           sTemp, Application.WorksheetFunction.Proper( _           " " & c.Value & " "), (" " & c.Value & " "))

Next c

ProperSpecial = sTemp End Function

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