Tìm hiểu về các ký tự chữ cái (Microsoft Excel)
Bryan có một trang tính có rất nhiều ô có một số ký tự chữ cái trong chúng. Anh ta đang tìm cách để loại bỏ chỉ những ký tự chữ cái đó, bất kể chúng xuất hiện ở đâu trong phòng giam. Ví dụ: nếu ô chứa “ABC123”, Bryan muốn loại bỏ “ABC”
và chỉ còn lại “123”. Tương tự, “A3B2C1” sẽ trở thành “321”
và “# 45P%” sẽ trở thành “# 45%”.
Cách duy nhất để tiếp cận vấn đề này là sử dụng macro. Nếu bạn muốn đơn giản loại bỏ các ký tự tại chỗ, thì bạn có thể làm như vậy bằng cách chọn các ô bạn muốn ảnh hưởng, sau đó chạy macro kiểm tra từng ô và xóa các ký tự vi phạm. Có nhiều cách bạn có thể làm điều này; macro sau là một cách tiếp cận đơn giản.
Sub CleanText1() Dim rngCell As Range Dim intChar As Integer Dim strCheckString As String Dim strCheckChar As String Dim intCheckChar As Integer Dim strClean As String For Each rngCell In Selection strCheckString = rngCell.Value strClean = "" For intChar = 1 To Len(strCheckString) strCheckChar = Mid(strCheckString, intChar, 1) intCheckChar = Asc(strCheckChar) Select Case intCheckChar Case 65 To 90 'upper case chars 'Do nothing Case 97 To 122 'lower case chars 'Do nothing Case 128 To 151 'special language chars 'Do nothing Case 153 To 154 'special language chars 'Do nothing Case 159 To 165 'special language chars 'Do nothing Case Else strClean = strClean & strCheckChar End Select Next intChar rngCell.Value = strClean Next rngCell End Sub
Điều thú vị về cách tiếp cận này để loại bỏ các ký tự là bạn có thể dễ dàng loại bỏ các ký tự khác bằng cách chỉ cần sửa đổi những gì được chọn (và những hành động được thực hiện) trong cấu trúc Chọn trường hợp.
Nếu bạn không muốn sửa đổi các ô gốc, một cách tiếp cận tốt là kết hợp một hàm do người dùng xác định sẽ trả về phiên bản “sạch” của một chuỗi. Điều này có thể đạt được bằng cách thực hiện một vài sửa đổi đối với macro trước đó.
Function CleanText2(ByVal sRaw As String) As String Dim intChar As Integer Dim strCheckString As String Dim strCheckChar As String Dim intCheckChar As Integer Dim strClean As String Application.Volatile strClean = "" For intChar = 1 To Len(sRaw) strCheckChar = Mid(sRaw, intChar, 1) intCheckChar = Asc(strCheckChar) Select Case intCheckChar Case 65 To 90 'upper case chars 'Do nothing Case 97 To 122 'lower case chars 'Do nothing Case 128 To 151 'special language chars 'Do nothing Case 153 To 154 'special language chars 'Do nothing Case 159 To 165 'special language chars 'Do nothing Case Else strClean = strClean & strCheckChar End Select Next intChar CleanText2 = strClean End Function
Để sử dụng hàm, bạn có thể đặt một công thức như sau vào ô:
=CleanText2(A1)
Kết quả là công thức trả về phiên bản “sạch” của bất kỳ thứ gì có trong ô A1 mà không làm ảnh hưởng đến nội dung của ô A1.
_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 (3219) áp dụng cho Microsoft Excel 97, 2000, 2002 và 2003. Bạn có thể tìm 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: