Loại bỏ ký tự đặc biệt trong 1 ô (1 người xem)

  • Thread starter Thread starter nn.tien
  • Ngày gửi Ngày gửi

Người dùng đang xem chủ đề này

nn.tien

Thành viên mới
Tham gia
12/6/09
Bài viết
19
Được thích
2
Anh chị làm ơn hướng dẫn cách loại bỏ các ký tự đặc biệt trong 1 ô excel (chỉ giữ lại các ký tự là số hoặc chữ cái), ví dụ: ô A1 có dữ lieu: 12 H_3'A~.D-H*K em muốn lấy ra kết quả là 12h3adhk (loại bỏ các ký tự đặc biệt như khoảng trắng, '~-* ....). em xin chân thành cảm ơn!
 
Chỉnh sửa lần cuối bởi điều hành viên:
Anh chị làm ơn hướng dẫn cách loại bỏ các ký tự đặc biệt trong 1 ô excel (chỉ giữ lại các ký tự là số hoặc chữ cái), ví dụ: ô A1 có dữ lieu: 12 H_3'A~.D-H*K em muốn lấy ra kết quả là 12h3adhk (loại bỏ các ký tự đặc biệt như khoảng trắng, '~-* ....). em xin chân thành cảm ơn!
Bạn dùng code này (mình copy từ bài của 1 tác giả khác)
Function ChuyenDoi(ByVal txt As String) As String
With CreateObject("VBScript.RegExp")
.Global = True
.Pattern = "[/:\*\?\[\]\,\.\'\~\!\@\#\$\%\^\&\*\(\)\¢\®\™\+\-\_\=\{\}\<\>]"
ChuyenDoi = .Replace(txt, "")
End With


End Function

Dùng hàm bằng công thức=ChuyenDoi(A1)
 
Cám ơn bạn đã trợ giúp, ngoài các ký tự trong ví dụ có thể còn nhiều ký tự lạ khác nữa, bạn có cách làm nào có thể kiểm tra điều kiện: nếu là số và ký tự ABC... thì giữ lại, ngoài ra thì xóa bỏ được không? mình thử kết hợp Replace với isnumber isnontext nhưng ko rành lắm nên chịu thua!

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau
 
Lần chỉnh sửa cuối:
Cám ơn bạn đã trợ giúp, ngoài các ký tự trong ví dụ có thể còn nhiều ký tự lạ khác nữa, bạn có cách làm nào có thể kiểm tra điều kiện: nếu là số và ký tự ABC... thì giữ lại, ngoài ra thì xóa bỏ được không? mình thử kết hợp Replace với isnumber isnontext nhưng ko rành lắm nên chịu thua!
Bạn đã thử code trên chưa?
Bạn hãy thử với tất cả các trường hợp có thể xảy ra đi, xem code có hoạt động tốt không.
 
Lần chỉnh sửa cuối:
Mình thử thì thấy chạy tốt bạn ah, chưa tìm ra ngoại lệ nào cả, nhưng bạn có cách làm dạng công thức được không? mang sang máy khác khỏi phải tạo hàm mới. Cám ơn bạn nhiều!
Mình tìm kiếm cho bạn thì tạm thời chỉ có cách dùng VBA này là nhanh nhất.
Muốn dùng sang máy khác thì bạn copy file này, sheet này đi sang máy đó.
 
Anh chị làm ơn hướng dẫn cách loại bỏ các ký tự đặc biệt trong 1 ô excel (chỉ giữ lại các ký tự là số hoặc chữ cái), ví dụ: ô A1 có dữ lieu: 12 H_3'A~.D-H*K em muốn lấy ra kết quả là 12h3adhk (loại bỏ các ký tự đặc biệt như khoảng trắng, '~-* ....). em xin chân thành cảm ơn!
Bạn dùng code này (mình copy từ bài của 1 tác giả khác)
Function ChuyenDoi(ByVal txt As String) As String
With CreateObject("VBScript.RegExp")
.Global = True
.Pattern = "[/:\*\?\[\]\,\.\'\~\!\@\#\$\%\^\&\*\(\)\¢\®\™\+\-\_\=\{\}\<\>]"
ChuyenDoi = .Replace(txt, "")
End With


End Function

Dùng hàm bằng công thức=ChuyenDoi(A1)

Viết pattern như vậy cho gọn và tổng quát hơn :
[GPECODE=vb]
Function GPE(str As String) As String
With CreateObject("Vbscript.regexp")
.Global = True
.Pattern = "(?:\W|_)+"
GPE = .Replace(str, "")
End With
End Function
[/GPECODE]
 
Lần chỉnh sửa cuối:
Viết pattern như vậy cho gọn và tổng quát hơn :
[GPECODE=vb]
Function GPE(str As String) As String
With CreateObject("Vbscript.regexp")
.Global = True
.Pattern = "(?:\W|_)+"
GPE = .Replace(str, "")
End With
End Function
[/GPECODE]

Bạn có thể giải thích cho mình đoạn code "(?:\W|_)+" này không?
Theo mình biết "\W|_" đoạn này có nghĩa là tìm những ký tự không phải ký tự chữ cái a-Z, ký tự số 0-9
còn mình chưa hiểu thêm (?:)+ để làm gì?
 
Bạn có thể giải thích cho mình đoạn code "(?:\W|_)+" này không?
Theo mình biết "\W|_" đoạn này có nghĩa là tìm những ký tự không phải ký tự chữ cái a-Z, ký tự số 0-9
còn mình chưa hiểu thêm (?:)+ để làm gì?
Bạn thử bỏ ?: xem kết quả thế nào.
"+" là xuất hiện ít nhất 1 lần
 
Bạn có thể giải thích cho mình đoạn code "(?:\W|_)+" này không?
Theo mình biết "\W|_" đoạn này có nghĩa là tìm những ký tự không phải ký tự chữ cái a-Z, ký tự số 0-9
còn mình chưa hiểu thêm (?:)+ để làm gì?


Bạn đọc cái này sẽ hiểu nhé.

===============================
siwtom

Tiếp theo ...

C.
1. Cấu trúc "pattern1(?=pattern2)"
- tìm tất cả các đoạn khớp với pattern1 mà sau
chúng (trong chuỗi nguồn) có đoạn khớp với pattern2​

===================
Cái này cũng không cần phức tạp thế chỉ thế này cũng đủ
Mã:
.Pattern = "[\W+|_]"
 

Bài viết mới nhất

Back
Top Bottom