Sudhakar có một số dữ liệu trong cột A có dấu cách ở cuối. Nếu anh ta sử dụng hàm TRIM trên dữ liệu, nó sẽ loại bỏ một số khoảng trắng ở cuối, nhưng không phải tất cả chúng. Anh ấy tự hỏi tại sao một số khoảng trắng sẽ bị bỏ qua và làm thế nào anh ấy có thể xóa tất cả chúng.

Trên thực tế, có một số cách khác nhau để bạn có thể tiếp cận vấn đề này.

Phương pháp phù hợp cho mục đích của bạn luôn phụ thuộc vào bản chất của dữ liệu bạn đang sử dụng.

Trước hết, nếu bạn sử dụng TRIM trên một ô, hãy nhớ rằng nó chỉ loại bỏ khoảng trắng. Điều này, theo định nghĩa, có nghĩa là nó chỉ loại bỏ các ký tự có mã ASCII là 32. Thật không may, có những ký tự ASCII khác hiển thị dưới dạng “dấu cách”, nhưng không thực sự là dấu cách. Những thứ này sẽ không bị TRIM xóa.

Sẽ rất hữu ích nếu bạn có thể tìm ra những ký tự khó chịu đó là gì, phải không? Chà, nếu văn bản trong ô không dài như vậy, thì đây là một macro nhỏ tiện dụng sẽ xem xét nội dung ô và lần lượt hiển thị từng ký tự, cùng với giá trị ASCII của nó:

Sub StringContents()

Dim sTemp As String     Dim sMsg As String     Dim J As Integer          If Selection.Cells.Count > 1 Then         sMsg = "Please select only one cell"

Else         sMsg = "Full string: >" & ActiveCell.Value & "<" & vbCrLf         For J = 1 To Len(ActiveCell.Value)

sTemp = Mid(ActiveCell.Value, J, 1)

sMsg = sMsg & ">" & sTemp & "<     " & Asc(sTemp) & vbCrLf         Next J     End If     MsgBox sMsg End Sub

Để sử dụng macro, chỉ cần chọn ô duy nhất bạn muốn kiểm tra và sau đó chạy nó. Bạn kết thúc với một hộp thông báo hiển thị chuỗi đầy đủ cùng với từng ký tự riêng lẻ trong chuỗi.

Khi bạn biết giá trị ASCII của ký tự vi phạm mà TRIM sẽ không xóa, bạn có thể thực hiện thay thế cho ký tự đó. Ví dụ: nếu không gian trống hiển thị giá trị ASCII là 160, bạn có thể thực hiện thay thế theo cách sau:

=SUBSTITUTE(A1,CHAR(160)," ")

Điều này thay thế ký tự khoảng trắng thực cho bất kỳ ký tự ASCII 160 nào trong chuỗi. Tương tự, bạn có thể loại bỏ các không gian giả khác tương tự.

Tất nhiên, bạn có thể thử sử dụng một hàm Excel khác để loại bỏ một số ký tự ASCII không in được, chẳng hạn như sau:

=CLEAN(A1)

Nó sẽ không loại bỏ tất cả mọi thứ, nhưng nó làm rất tốt việc dọn dẹp rất nhiều nhân vật vi phạm.

Bạn thậm chí có thể bắt đầu kết hợp các hàm trong công thức dọn dẹp của mình, theo cách này:

=TRIM(CLEAN(A1))

Bạn có thể tiến thêm một bước nữa, theo cách này:

=TRIM(SUBSTITUTE(CLEAN(A2),CHAR(160)," "))

Công thức này loại bỏ 160 ký tự ASCII cũng như những thứ bị CLEAN bắt, và sau đó thực hiện TRIM trên kết quả đó.

Nếu bạn phải làm sạch khá nhiều ô hoặc nếu bạn cần làm sạch các ô thường xuyên, bạn có thể cân nhắc sử dụng macro để thực hiện công việc nặng nhọc. Macro sau sẽ loại bỏ rất nhiều ký tự không in được, chỉ để lại các ký tự và dấu chấm câu hiển thị.

Sub CleanCells()

Dim rTarget As Range     Dim c As Range     Dim sTemp As String     Dim J As Integer          Set rTarget = Selection.SpecialCells(xlCellTypeConstants, 2)

For Each c In rTarget         sTemp = c.Value         For J = 1 To 31             sTemp = Replace(sTemp, Chr(J), " ")

Next J         For J = 127 To 255             sTemp = Replace(sTemp, Chr(J), " ")

Next J         c.Value = sTemp     Next c End Sub

Macro chỉ hoạt động trên những ô trong vùng chọn hiện tại có chứa các giá trị không đổi. Nói cách khác, những ô không chứa công thức.

ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.

Mẹo này (5132) áp dụng cho Microsoft Excel 2007, 2010, 2013 và 2016.