hỏi về thay thế ký tự đặc biệt từ phải sang bằng chữ (có nhiều ký tự đặc biệt giống nhau)

Liên hệ QC

bicutit

Finest Сasual Dating Verified Maidens
Tham gia
26/11/10
Bài viết
55
Được thích
2
Giới tính
Nam
Nghề nghiệp
Health
Chào các bác,
Nhờ các bác tư vẫn thay thế dấu phẩy cuối cùng bằng chữ "và".
Ví dụ văn bản gốc
mặt trời, mặt trăng, trái đất, cây khế, quả cam, con vịt, con gà, con trâu.
Văn bản muốn nhận được là:
mặt trời, mặt trăng, trái đất, cây khế, quả cam, con vịt, con gà và con trâu.

Em chưa nghĩ ra cách phối hợp replace, right, left như thế nào, nhờ các bác tư vấn.
Xin cảm ơn.
 
Cái này xài VBA dễ như trở bàn tay í mà!
 
Dùng SUBSTITUTE để thay "," bằng " và". Nhưng do ta không thay hết mà chỉ thay dấu phẩy "," cuối cùng nên phải cung cấp tham số cuối cùng là chỉ số của dấu phẩy "," cuối cùng cần thay thế. Chỉ số cuối cùng về mặt số bằng số lượng dấu phẩy trong chuỗi. Để tính số lượng dấu phẩy thì dùng LEN(A1)-LEN(SUBSTITUTE(A1,",",""))
Mã:
=SUBSTITUTE(A1,","," và",LEN(A1)-LEN(SUBSTITUTE(A1,",","")))
 
Dùng SUBSTITUTE để thay "," bằng " và". Nhưng do ta không thay hết mà chỉ thay dấu phẩy "," cuối cùng nên phải cung cấp tham số cuối cùng là chỉ số của dấu phẩy "," cuối cùng cần thay thế. Chỉ số cuối cùng về mặt số bằng số lượng dấu phẩy trong chuỗi. Để tính số lượng dấu phẩy thì dùng LEN(A1)-LEN(SUBSTITUTE(A1,",",""))
Mã:
=SUBSTITUTE(A1,","," và",LEN(A1)-LEN(SUBSTITUTE(A1,",","")))
bác thật là giỏi,
em ko nghĩ ra cách thay thế dấu phẩy bằng "" để đếm số lượng dấu phẩy,
xin chân thành cảm ơn
 
Dùng SUBSTITUTE để thay "," bằng " và". Nhưng do ta không thay hết mà chỉ thay dấu phẩy "," cuối cùng nên phải cung cấp tham số cuối cùng là chỉ số của dấu phẩy "," cuối cùng cần thay thế. Chỉ số cuối cùng về mặt số bằng số lượng dấu phẩy trong chuỗi. Để tính số lượng dấu phẩy thì dùng LEN(A1)-LEN(SUBSTITUTE(A1,",",""))
Mã:
=SUBSTITUTE(A1,","," và",LEN(A1)-LEN(SUBSTITUTE(A1,",","")))
Bác oi cho cháu hỏi ké chút síu
Nếu như chuỗi có nhiều dấu ","
VD: (a,,,,,,,,,,b,,,,,,c,,d)
Bây giờ cháu muốn thay tất cả các dấu "," chỉ còn lại 1 dấu ","
Kết quả=a,b,c,d
Thì công thức như nào ạ?
 
Bác oi cho cháu hỏi ké chút síu
Nếu như chuỗi có nhiều dấu ","
VD: (a,,,,,,,,,,b,,,,,,c,,d)
Bây giờ cháu muốn thay tất cả các dấu "," chỉ còn lại 1 dấu ","
Kết quả=a,b,c,d
Thì công thức như nào ạ?
Anh đoán thế này em nhé, được hay không anh không rõ lắm
Giả sử "a,,b,,,,,c,,,d,,,,,,,e,,f,,,g"

Function ThayTheDauPhay(Chuoi as String) as String
'Gia su so dau phay lap nhau toi da la 20
Dim i1 as Integer
Dim Chuoi2 as String
Chuoi2 = Chuoi
For i1 = 20 to 2 Step -1
Chuoi2 = Replace(Chuoi2, Application.Evaluate("=REPT(" & """" & "," & """" & "," & i1 & ")") , ",")
Next

ThayTheDauPhay = Chuoi2
End Function

Anh không biết hàm có hoạt động ok thật không vì anh chưa thử nhưng ý tưởng là kiểu thế. Em cũng nên tìm hiểu xem hàm REPT có sẵn trong VBA hay trong WorksheetFunction hay không nhưng nếu có thì em dùng kiểu có sẵn trong VBA sẽ nhanh hơn là dùng hàm Evaluate nhé
 
Em không có hàm này làm sao Anh hè?
Anh có thể dùng textjoin bài này được không Anh?
Trong file có UDF TEXTJOIN. Thử công thức mảng:

Mã:
=TEXTJOIN(",",TRUE,TRIM(MID(SUBSTITUTE(A1,",",REPT(" ",LEN(A1))),ROW(INDIRECT("1:"&LEN(A1)-LEN(SUBSTITUTE(A1,",",""))))*LEN(A1)-LEN(A1)+1,LEN(A1))))
 

File đính kèm

  • TEXTJOIN.xlsm
    14.6 KB · Đọc: 6
Trong file có UDF TEXTJOIN. Thử công thức mảng:

Mã:
=TEXTJOIN(",",TRUE,TRIM(MID(SUBSTITUTE(A1,",",REPT(" ",LEN(A1))),ROW(INDIRECT("1:"&LEN(A1)-LEN(SUBSTITUTE(A1,",",""))))*LEN(A1)-LEN(A1)+1,LEN(A1))))
Trường hợp có 01 dấu phẩy thì sao Anh? Hình như chủ thớt có yêu cầu chuỗi có 01 dấu phẩy chắc là giữ nguyên, công thức của Anh thì loại bỏ dấu phẩy đó.
 
Chơi bời tí, thử công thức sau:
Mã:
=SUBSTITUTE(SUBSTITUTE(TRIM(SUBSTITUTE(SUBSTITUTE(A1," "," "),","," "))," ",",")," "," ")
Công thức của Anh mới tạo khoảng trắng giữa các từ, Chắc Anh phải dùng hàm nỗi chuỗi nữa.
 
Thử lại:

=TEXTJOIN(",",TRUE,TRIM(MID(SUBSTITUTE(A1,",",REPT(" ",LEN(A1))),ROW(INDIRECT("1:"&LEN(A1)+1-LEN(SUBSTITUTE(A1,",",""))))*LEN(A1)-LEN(A1)+1,LEN(A1))))
Không hiểu lắm, em thử đưa file và kết quả lên xem.
Trường hợp thêm dấu chấm vào cuối câu như hình thì cách làm sao Anh, Cái này em hỏi thêm đề phòng trường hợp thêm thôi, Công thức của 2 Anh đều đúng rồi.
1609582914556.png
 
Excel của bạn có hàm TEXTJOIN không?
em có hàm của Bác @ndu96081631 anh @phuocam oi
Anh hướng dẫn em với
Bài đã được tự động gộp:

Chơi bời tí, thử công thức sau:
Mã:
=SUBSTITUTE(SUBSTITUTE(TRIM(SUBSTITUTE(SUBSTITUTE(A1," "," "),","," "))," ",",")," "," ")
anh oi, em cũng đang dùng hàm này, nhưng em thấy nó hơi dài dài một chút có cách nào rút gọn được không hở anh?
 
em có hàm của Bác @ndu96081631 anh @phuocam oi
Anh hướng dẫn em với
Bài đã được tự động gộp:


anh oi, em cũng đang dùng hàm này, nhưng em thấy nó hơi dài dài một chút có cách nào rút gọn được không hở anh?
Đây là cách để khống chế khoảng trắng mà, nếu làm ngắn thì khi chuối có khoảng trắng mình loại bỏ mất luôn. Phải chấp nhận.
Nhưng biết đâu có người làm ngắn hơn em đợi xem.
 
Web KT
Back
Top Bottom