Tìm và thay thế nhiều ký tự

Liên hệ QC

hayvoc

Thành viên mới
Tham gia
30/11/08
Bài viết
38
Được thích
3
A1 ngay,mai.troi-lai(sang

B1 =SUBSTITUTE(A1,","," ") ngay mai.troi-lai(sang
C1 =SUBSTITUTE(B1,"."," ") ngay mai troi-lai(sang
D1 =SUBSTITUTE(C1,"-"," ") ngay mai troi lai(sang
E1 =SUBSTITUTE(D1,"("," ") ngay mai troi lai sang

Có cách nào có thẻ thay thế 1 làn {, . - ( } bằng " " được ko các anh ?
 
A1 ngay,mai.troi-lai(sang

B1 =SUBSTITUTE(A1,","," ") ngay mai.troi-lai(sang
C1 =SUBSTITUTE(B1,"."," ") ngay mai troi-lai(sang
D1 =SUBSTITUTE(C1,"-"," ") ngay mai troi lai(sang
E1 =SUBSTITUTE(D1,"("," ") ngay mai troi lai sang

Có cách nào có thẻ thay thế 1 làn {, . - ( } bằng " " được ko các anh ?

lồng các hàm substitute vào nhau, hay dùng vba thì xài hàm replace
 
A1 ngay,mai.troi-lai(sang

B1 =SUBSTITUTE(A1,","," ") ngay mai.troi-lai(sang
C1 =SUBSTITUTE(B1,"."," ") ngay mai troi-lai(sang
D1 =SUBSTITUTE(C1,"-"," ") ngay mai troi lai(sang
E1 =SUBSTITUTE(D1,"("," ") ngay mai troi lai sang

Có cách nào có thẻ thay thế 1 làn {, . - ( } bằng " " được ko các anh ?
Hàm tự tạo này có thể xài được
PHP:
Function ThayThe(Cell$) As String
With CreateObject("Vbscript.Regexp")
   .Global = True
   .Pattern = "\.|-|\("
   ThayThe = .Replace(Cell, " ")
End With
End Function
 
cám ơn a, vạy giờ muốn thêm các ký tự khác thì sao anh
Pattern = "\.|-|\("
 
có thể áp dụng bàng 1 từ hay 1 chuỗi được ko anh
 
nhờ a điền vào 1 làn dùm e, e chưa hiểu cú pháp nên điền vào ko được

, . - ( ) < >
 
e làm được ròi thì ra đây là regex thank anh nhìu

\.|-|\(|\)
 
\.|-|<|>|\)|\(|,

chuỗi của e %#^#$
 
A1 ngay,mai.troi-lai(sang

B1 =SUBSTITUTE(A1,","," ") ngay mai.troi-lai(sang
C1 =SUBSTITUTE(B1,"."," ") ngay mai troi-lai(sang
D1 =SUBSTITUTE(C1,"-"," ") ngay mai troi lai(sang
E1 =SUBSTITUTE(D1,"("," ") ngay mai troi lai sang

Có cách nào có thẻ thay thế 1 làn {, . - ( } bằng " " được ko các anh ?
Góp thêm cho xôm tụ.
Dùng cho chữ không dấu
PHP:
Public Function Tach(DL)
With CreateObject("VBScript.RegExp")
.Global = True
.IgnoreCase = True
.Pattern = "[^a-z]"
Tach = .Replace(DL, " ")
End With
End Function
 
Như bài 13 thì đây là 1 kiểu khác để tạo Pattern. Tuy nhiên dấu | sẽ hữu dụng khi bạn hiểu thêm tí về Regexp. Regexp rất thú vị và linh hoạt khi làm việc với chuỗi. Từ từ nhai nhé.

.Pattern = "[().,-<>]"
 
cho em hỏi thêm e muốn tách như thế này thì làm sao ạ

A1: 10 điều (Bác hồ) dạy
B1: (Bác hồ)
C1: 10 điều dạy
 
cho em hỏi thêm e muốn tách như thế này thì làm sao ạ

A1: 10 điều (Bác hồ) dạy
B1: (Bác hồ)
C1: 10 điều dạy
Làm theo dữ liệu mẫu
B1 :
PHP:
=TRIM(MID(A1,FIND("(",A1),LEN(A1)-LEN(C1)))
C1 :
PHP:
=TRIM(LEFT(A1,FIND("(",A1)-1)&RIGHT(A1,LEN(A1)-FIND(")",A1)))
 
cho em hỏi thêm e muốn tách như thế này thì làm sao ạ

A1: 10 điều (Bác hồ) dạy
B1: (Bác hồ)
C1: 10 điều dạy
Nếu vẫn muốn dùng RegExp thì đây là Pattern cho yêu cầu này
Nhưng phải để xài được phải biết xài hàm replace để xóa cụm (abc) và hàm execute để lấy cụm (abc).

.Pattern = "\(.+\)"
 
xin cho e 1 thí dụ mẫu được ko ạ
 
xin cho e 1 thí dụ mẫu được ko ạ

PHP:
Function TachChuoi(cell As String) As String
On Error Resume Next
With CreateObject("vbscript.regexp")
     .Global = True
     .Pattern = "\(.+\)"
     TachChuoi = Trim(.Execute(Trim(cell)).Item(0).Value)
End With
End Function
Function XoaChuoi(cell As String) As String
With CreateObject("vbscript.regexp")
     .Global = True
     .Pattern = "\(.+\)"
     XoaChuoi = Application.Trim(.Replace(cell, ""))
End With
End Function
 
Như bài 13 thì đây là 1 kiểu khác để tạo Pattern. Tuy nhiên dấu | sẽ hữu dụng khi bạn hiểu thêm tí về Regexp. Regexp rất thú vị và linh hoạt khi làm việc với chuỗi. Từ từ nhai nhé.

.Pattern = "[().,-<>]"

Dấu | dùng cho sự chọn lựa giữa các cụm ký tự, tức là cái pattern sẽ được tách thành mảng chuỗi. Dấu [] dùng cho sự chọn lựa giữa các ký tự trong một nhóm character class, tức là cái pattern sẽ được tách thành mảng ký tự. Tuy VBA đối xử với mảng chuỗi và mảng ký tự không phân biệt nhưng phần đông các cổ máy Regex phân biệt được cách đối xử chuỗi và ký tự. Cho nên dùng [] hữu hiệu hơn dùng |.

PHP:
Function TachChuoi(cell As String) As String
On Error Resume Next
With CreateObject("vbscript.regexp")
     .Global = True
     .Pattern = "\(.+\)"
     TachChuoi = Trim(.Execute(Trim(cell)).Item(0).Value)
End With
End Function
Function XoaChuoi(cell As String) As String
With CreateObject("vbscript.regexp")
     .Global = True
     .Pattern = "\(.+\)"
     XoaChuoi = Application.Trim(.Replace(cell, ""))
End With
End Function

Lưu ý rằng Regex có tính chất tham lam.
Dùng pattern này phải cẩn thận vì nó chỉ tính cái '(' đầu tiên và cái ')' cuối cùng. Nêu chuỗi có nhiều dấu ngoặc thì nó sẽ gom hết vào một mối.

VD
Con chó (nhỏ) bị con mèo (lớn) đuổi
TachChuoi = (nhỏ) bị con mèo (lớn)
XoaChuoi = Con chó đuổi
 
Web KT
Back
Top Bottom