Câu hỏi Làm cách nào để xóa các ký tự độ rộng bằng 0 khỏi tệp excel?


Tôi có một tập tin Excel có chứa rất nhiều văn bản, mà tôi vừa phát hiện ra có chứa các ký tự 0 độ rộng, không hiển thị bình thường.

Tôi đang so sánh chuỗi và chúng đang gây ra sự cố.

Đã dành gần một giờ để tìm cách xóa chúng, nhưng không tìm được cách nào.

Các lệnh thiết bị đầu cuối Linux và JavaScript thay thế các hàm tôi đã tìm thấy, nhưng chúng không áp dụng cho trường hợp của tôi.

Tôi đã thử sử dụng chức năng Thay thế trong Excel, nhưng nó nói rằng nó không tìm thấy bất cứ điều gì để thay thế. Tuy nhiên, nếu tôi chỉ sử dụng Tìm và dán vào ký tự chiều rộng bằng 0 thì nó sẽ tìm chúng trong văn bản. Thay thế không hoạt động.


1
2017-10-13 02:02


gốc


Ghi lại một macro dán trong ký tự chiều rộng bằng không trong Tìm mà bạn đã nói. Sau đó, xem mã được viết cho macro và xem excel nào đang gọi ký tự đó. Hy vọng sau đó, chúng ta có thể viết macro tùy chỉnh. - Portland Runner
Những cái này ở đầu, cuối, hay ở giữa cánh đồng? Có một hàm trim () sẽ xóa chúng khỏi đầu và cuối. - cybernard
Đây có phải là về sự xuất hiện của một ký tự không có độ rộng cụ thể bằng 0 hay không? - Jukka K. Korpela
'Không có ký tự chiều rộng' là gì ???? Bạn có nghĩa là ký tự khoảng trắng không cụ thể được mã hóa bằng Unicode dưới dạng U + 200B không gian chiều rộng bằng không (HTML:)? - Jan Doggen


Các câu trả lời:


Tìm thấy một sửa chữa ngớ ngẩn, nhưng dễ dàng.

  1. Chọn toàn bộ cột trong Excel có chứa dữ liệu trong đó có tính cách.
  2. Sao chép lựa chọn. Để lựa chọn ON. Chưa bỏ chọn.
  3. Dán dữ liệu vào Notepad.
  4. Sử dụng Thay thế của Notepad để xóa tất cả các ký tự chiều rộng bằng 0.
  5. Chọn tất cả văn bản trong Notepad (CTRL + A) và sao chép nó.
  6. Dán nó trở lại trong Excel, qua lựa chọn đã được chọn trước.

Dễ dàng ! Hy vọng điều này sẽ giúp người khác ra :)


0
2017-10-13 19:34





Hãy thử macro này:

Sub deleteNothing()
    Dim rLook As Range
    Dim wf As WorksheetFunction
    Set wf = Application.WorksheetFunction
    For Each r In ActiveSheet.UsedRange
        If Len(r.Value) = 0 And wf.CountA(r) = 1 Then
            If rLook Is Nothing Then
                Set rLook = r
            Else
                Set rLook = Union(rLook, r)
            End If
        End If
    Next r

    If rLook Is Nothing Then
    Else
        rLook.Clear
    End If
End Sub

0
2017-10-15 17:45