Xin hỏi về Join và Split trong VBA ?

Liên hệ QC

TrungChinhs

Thành viên tích cực
Tham gia
18/2/08
Bài viết
1,475
Được thích
2,469
Nghề nghiệp
Công chức
Tại ô B5 tôi có chuỗi "Không-có-gì-quý-hơn-độc-lập-tự-do". Để tách các ký tự trong chuỗi tôi viết Temp = Split([b5], "-")
1. Muốn biết chuỗi này có bao nhiêu Temp thì viết như thế nào ? tôi đã thử Len(Temp) hoặc Temp.Count đều không được.
2. Tôi muôn dùng Join để nối chuỗi từ Temp(0) đến Temp(2) tức là muốn tạo chuỗi mới là "Không có gì" thì viết như thế nào ?

Nhờ các bạn giúp viết giúp code.

Thanks !
 
Tại ô B5 tôi có chuỗi "Không-có-gì-quý-hơn-độc-lập-tự-do". Để tách các ký tự trong chuỗi tôi viết Temp = Split([b5], "-")
1. Muốn biết chuỗi này có bao nhiêu Temp thì viết như thế nào ? tôi đã thử Len(Temp) hoặc Temp.Count đều không được.
2. Tôi muôn dùng Join để nối chuỗi từ Temp(0) đến Temp(2) tức là muốn tạo chuỗi mới là "Không có gì" thì viết như thế nào ?

Nhờ các bạn giúp viết giúp code.

Thanks !
Temp = Split([b5], "-") thì Temp sẽ là mảng 1 chiều Base 0
Để đếm số phần tử của mảng Temp ta dùng UBound(Temp) + 1 ---> UBound(Temp) là vị trí phần tử cuối cùng và LBound(Temp) là vị trí phần tử đầu tiên
Để nối từ phần tử 0 đến 2 ta dùng
PHP:
ReDim Preserve Temp(2)
MsgBox Join(Temp, "-")
Nếu nối từ 1 vị trí bất kỳ thì phải dùng For.. Next hoặc nối toàn bộ rồi dùng các hàm xử lý chuổi tách ra
 
Upvote 0
Tại ô B5 tôi có chuỗi "Không-có-gì-quý-hơn-độc-lập-tự-do". Để tách các ký tự trong chuỗi tôi viết Temp = Split([b5], "-")
1. Muốn biết chuỗi này có bao nhiêu Temp thì viết như thế nào ? tôi đã thử Len(Temp) hoặc Temp.Count đều không được.
2. Tôi muôn dùng Join để nối chuỗi từ Temp(0) đến Temp(2) tức là muốn tạo chuỗi mới là "Không có gì" thì viết như thế nào ?

Nhờ các bạn giúp viết giúp code.

Thanks !
Một cách viết
Mã:
Public Sub GomGom()
    Dim Tam, Gom(1 To 3), I
        Tam = Split([b5], "-")
            For I = 1 To 3
                Gom(I) = Tam(I - 1)
            Next
    [a1] = Join(Gom(), " ")
End Sub
 
Upvote 0
Em xin hỏi về Split

Em chưa hiểu cách dùng cái này lắm, em viết thử Code sau:
Giả sử ô A1 của em là 123,dfg,456

PHP:
Function Tach(Cll As String)
    Tach = Split(Cell, ",")(1)
End Function

Ý định của em là sẽ tách ra chuỗi con đầu tiên khi gặp dấu phảy, tức là ô B1=Tach(A1)=123 nhưng không được. Xin chỉ bảo giúp em
 
Upvote 0
Em chưa hiểu cách dùng cái này lắm, em viết thử Code sau:
Giả sử ô A1 của em là 123,dfg,456

PHP:
Function Tach(Cll As String)
    Tach = Split(Cell, ",")(1)
End Function

Ý định của em là sẽ tách ra chuỗi con đầu tiên khi gặp dấu phảy, tức là ô B1=Tach(A1)=123 nhưng không được. Xin chỉ bảo giúp em
Mảng bắt đầu từ 0 chứ ko phải 1
PHP:
Function Tach(Cll As String)
    Tach = Split(Cell, ",")(0)
End Function
 
Upvote 0
Sao em chạy Code của anh Kyo lại không được? Kết quả ra lỗi #VALUE! anh ah
 

File đính kèm

Upvote 0
Sao em chạy Code của anh Kyo lại không được? Kết quả ra lỗi #VALUE! anh ah

Sơ xuất quá, xin lỗi bạn nhé, Cell thành Cll nhé vì tham số là Cll mà
PHP:
Function Tach(Cll As String)
    Tach = Split(Cll, ",")(0)
End Function

Mà bạn dùng thế này mà cell rỗng thì sẽ bị #VALUE đấy, cần sửa một chút
 
Upvote 0
Nếu em viết sub như thế này thì sai ở đâu ah:

PHP:
Sub Tach()
    DL = Split(Cells(1, 1), ",")(1)
    i = UBound(DL, 1)
    MsgBox i
    J = LBound(DL, 1)
    MsgBox J
End Sub
 
Upvote 0
Nếu em viết sub như thế này thì sai ở đâu ah:

PHP:
Sub Tach()
    DL = Split(Cells(1, 1), ",")(1)
    i = UBound(DL, 1)
    MsgBox i
    J = LBound(DL, 1)
    MsgBox J
End Sub
Nếu DL = Split(Cells(1, 1), ",") thì DL mới là biến mảng, và như thế nó mới có LBound, UBound
Nếu DL = Split(Cells(1, 1), ",")(1) thì DL thì là 1 phần tử trong mảng, không phải là mảng nên chẳng thể nào có LBound, UBound được
Có thể kiểm tra bằng code
PHP:
Sub Tach1()
  DL = Split(Cells(1, 1), ",")(1)
  MsgBox TypeName(DL)
End Sub
Code này kiểm tra kiểu dữ liệu của biến DL
 
Upvote 0
Web KT

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

Back
Top Bottom