Cách xác định các tab ngang trong Excel và thay thế nó


3

Tôi có hàng ngàn dữ liệu trong tệp excel của mình, chúng được lấy dữ liệu từ các trang web khác nhau, ban đầu được lưu trữ trong các tệp CSV sau đó được di chuyển vào Excel. Dữ liệu này là để sử dụng máy chủ web của tôi.

Bây giờ vấn đề của tôi là có nhiều horizontal tabsnơi bị ẩn spacesvà chúng đang gây ra sự cố nghiêm trọng cho máy chủ web của tôi.


Tôi sẽ đưa ra một ví dụ để làm rõ ở đây:

Dữ liệu trong Excel : "Đây là một ô"

Dữ liệu khi được mã hóa để được sử dụng làm tham số url : "Điều này% 20is% 09a% 20cell"

Bạn có thể thấy rõ rằng một trong các khoảng trắng ở giữa đã được mã hóa thành% 09, đại diện cho một tab ngang . Điều này gây ra sự cố nghiêm trọng từ máy chủ của tôi và tôi CẦN xác định và thay thế điều này.

Vì vậy, làm thế nào tôi có thể tìm kiếm một tab ngang trong Excel?


Bạn có cần giữ lại không gian?
Burgi

Câu trả lời:


4

Câu trả lời của Burgi thực hiện mẹo, nhưng thay vì phải sao chép toàn bộ tập dữ liệu với một bảng tính đầy đủ các công thức, bạn có thể đạt được điều tương tự thông qua một vài dòng script.

Sub ReplaceTabs()
   Dim c As Range

   For Each c In ActiveCell.CurrentRegion
      c.Value = Replace(c.Value2, Chr(9), Chr(32))
   Next c
End Sub

Có một vài phương pháp để duyệt qua tất cả các ô có liên quan (ví dụ: bạn chỉ có thể nhắm mục tiêu các cột cụ thể với ActiveSheet.Range("A:A")vv, hoặc chọn các ô đang nghi vấn và sử dụng Selection.Cells) nhưng phương pháp này sẽ hoạt động nếu các ô liền kề và các tab có thể nằm trong bất kỳ tế bào.

Nó không phải là siêu tốc độ (200.000 tế bào mất khoảng 10 giây trên máy của tôi) nhưng phải đủ nhanh.

Nếu đây là một nhiệm vụ phổ biến thì bạn có thể xây dựng nó thành một tập lệnh nhập.


Cảm ơn, câu trả lời của Burgi hoạt động rất tốt với tôi nhưng tôi nghĩ rằng câu trả lời của bạn có hiệu suất tốt hơn và khả năng sử dụng lại tốt hơn. Nhiều đánh giá cao!
Joel Min

3

Mã này sẽ làm việc cho bạn:

=SUBSTITUTE(A1,CHAR(9),CHAR(32))

Công thức trên thay thế tất cả các trường hợp CHAR(9)với CHAR(32)trong chuỗi đã cho.

  • CHAR(9) - Nhân vật tab
  • CHAR(32) - Nhân vật không gian

Xem bài viết wiki này cho bảng tra cứu mà Windows sử dụng.


2

để tăng tốc câu trả lời của Lunatik để tắt / bật cập nhật trong khi macro đang hoạt động.

Dim tmp As Boolean
tmp = Application.ScreenUpdating
' this stores current value
Application.ScreenUpdating = False

   Dim c As Range

   For Each c In ActiveCell.CurrentRegion
      c.Value = Replace(c.Value2, Chr(9), Chr(32))
   Next c

Application.ScreenUpdating = tmp
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.