Sửa đổi cách viết hoa thích hợp (Microsoft Excel)
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 (11267) áp dụng cho Microsoft Excel 2007 và 2010. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện menu cũ hơn của Excel tại đây: