Vấn đề tách chuỗi trong VBA với hàm Split "ABCXYZ" => "A,B,C,X,Y,Z" (1 người xem)

Liên hệ QC

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

khongnhienttt

Thành viên hoạt động
Tham gia
15/7/15
Bài viết
137
Được thích
33
- mình có 1 bài toán đơn giản thôi: chúng ta có chuỗi "abcxyz" và muốn có kết quả là a,b,c,x,y,z
- Nếu dùng VBA đơn thuần thì có thể duyệt qua từng kí tự bằng for và dùng toán tử ghép chuỗi sau đó cắt bỏ 1 kí tự bên phải là xong
- Tuy nhiên mình thấy cái hàm split nó tách các kí tự phân cách bỡi dấu cách, có cách nào tách ra trong trường hợp này không rồi dùng hàm join nối lại
- 1 Cái nữa là có thể dùng VBScript.Regex không
===> mình muốn không dùng vòng lặp mà có thể giải quyết được, mong các bạn giúp đỡ
 
- mình có 1 bài toán đơn giản thôi: chúng ta có chuỗi "abcxyz" và muốn có kết quả là a,b,c,x,y,z
- Nếu dùng VBA đơn thuần thì có thể duyệt qua từng kí tự bằng for và dùng toán tử ghép chuỗi sau đó cắt bỏ 1 kí tự bên phải là xong
- Tuy nhiên mình thấy cái hàm split nó tách các kí tự phân cách bỡi dấu cách, có cách nào tách ra trong trường hợp này không rồi dùng hàm join nối lại
- 1 Cái nữa là có thể dùng VBScript.Regex không
===> mình muốn không dùng vòng lặp mà có thể giải quyết được, mong các bạn giúp đỡ
Ban đầu tôi thấy câu hỏi này khá vô lý nhưng bỗng google với cụm từ "string to array vba" thì tìm được một kết quả khá hợp ý. Dưới đây là minh họa:
PHP:
Function v(s As String, p As Integer)
   Dim buff() As String
   buff = Split(StrConv(s, vbUnicode), Chr$(0))
   ReDim Preserve buff(UBound(buff) - 1) 
   v = buff(p)
End Function
 
Upvote 0
Ban đầu tôi thấy câu hỏi này khá vô lý nhưng bỗng google với cụm từ "string to array vba" thì tìm được một kết quả khá hợp ý. Dưới đây là minh họa:
PHP:
Function v(s As String, p As Integer)
   Dim buff() As String
   buff = Split(StrConv(s, vbUnicode), Chr$(0))
   ReDim Preserve buff(UBound(buff) - 1) 
   v = buff(p)
End Function
rất cám ơn bạn nhưng code ra kết quả không đúng bạn ơi
Capture.JPG
 
Upvote 0
Có lẽ là ...?
Mã:
Function v(s As String)
   Dim buff() As String
   buff = Split(StrConv(s, vbUnicode), Chr$(0))
   ReDim Preserve buff(UBound(buff) - 1)
   v = Join(buff, ", ")
End Function
 
Upvote 0
Điều này đã được đề cập
Tách chuỗi thành mảng Char() array có 2 cách
1/Sử dụng hàm StrConv như ở trên . Cách này chỉ đúng với các kí tự thuộc hệ ASCII , nằm ngoài là chết ngắc .
2/Sử dụng RegExp . Cách này áp dụng cho tất cả mọi kí tự . chỉ cần set .Pattern = "" và .Replace(Stringinput, ",") là xong
 
Upvote 0
Điều này đã được đề cập
Tách chuỗi thành mảng Char() array có 2 cách
1/Sử dụng hàm StrConv như ở trên . Cách này chỉ đúng với các kí tự thuộc hệ ASCII , nằm ngoài là chết ngắc .
2/Sử dụng RegExp . Cách này áp dụng cho tất cả mọi kí tự . chỉ cần set .Pattern = "" và .Replace(Stringinput, ",") là xong
Rất cám ơn bạn, đã đúng cái mình cần, xin bạn giải thích cho mình 1 số cái:
1. buff = Split(StrConv(s, vbUnicode), Chr$(0)) : tại sao phải có dấu $ ( mình bỏ nó thấy vẫn ra kết quả)
2. tại sao phải sử dụng
StrConv để chuyển sang unicode mới có thể tách được.
 
Upvote 0
Rất cám ơn bạn, đã đúng cái mình cần, xin bạn giải thích cho mình 1 số cái:
1. buff = Split(StrConv(s, vbUnicode), Chr$(0)) : tại sao phải có dấu $ ( mình bỏ nó thấy vẫn ra kết quả)
2. tại sao phải sử dụng
StrConv để chuyển sang unicode mới có thể tách được.

cái này bạn cần hỏi người viết code nhé . Có thể bạn đã nhấn nút trích dẫn nhầm người .
 
Upvote 0
Upvote 0

ồ chào anh NDU , lần cuối được nói chuyện với "thần tượng" cách nay chắc hơn 3 tháng .
sao anh có cách tìm các bài viết liên quan trên diễn đàn rất nhanh vậy ? có bí kíp nào chỉ em với . !$@!!!$@!!!$@!!
 
Upvote 0
Web KT

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

Back
Top Bottom