Tách các chuỗi

Liên hệ QC

thuyloitienlu

Thành viên chính thức
Tham gia
17/4/08
Bài viết
58
Được thích
0
Các bạn cho tôi hỏi. Tôi có 6 hộp nhập texbox trên form (mỗi số trong chuỗi cáh nhau dấu ",") . Tôi đã gán 6 chuỗi đó cào 6 ô cell trên file và đếm được số lượng các phần tử trong chuỗi. Vậy tôi muốn tách từng phần tử trong 6 chuỗi vào 6 cột trong bảng tính. Code như sau nhưng chạy báo lỗi , các bạn xem sửa giúp tôi với.
Dim tento1, tento2, tento3, tento4, tento5, tento6 As String
For i = 2 To 200 '(chuoi lon nhat la 200 phần tử gồm các số tự nhiên)
tento1 = Cells(2, 4) '(gán chuỗi 1 = cell(2,4)
asplit = Split(tento1, ",", Cells(2, 5)) ' số lượng phần tử chuỗi 1)
Cells(i, 6) = asplit(i - 2) 'tách chuỗi 1 gán vào dòng 2 cột 6)

tento2 = Cells(3, 4)
asplit = Split(tento2, ",", Cells(3, 5))
Cells(i, 7) = asplit(i - 2)

tento3 = Cells(4, 4)
asplit = Split(tento3, ",", Cells(4, 5))
Cells(i, 8) = asplit(i - 2)

tento4 = Cells(5, 4)
asplit = Split(tento4, ",", Cells(5, 5))
Cells(i, 9) = asplit(i - 2)

tento5 = Cells(6, 4)
asplit = Split(tento5, ",", Cells(6, 5))
Cells(i, 10) = asplit(i - 2)

tento6 = Cells(7, 4)
asplit = Split(tento6, ",", Cells(7, 5))
Cells(i, 11) = asplit(i - 2)
Next i
 
Các bạn cho tôi hỏi. Tôi có 6 hộp nhập texbox trên form (mỗi số trong chuỗi cáh nhau dấu ",") . Tôi đã gán 6 chuỗi đó cào 6 ô cell trên file và đếm được số lượng các phần tử trong chuỗi. Vậy tôi muốn tách từng phần tử trong 6 chuỗi vào 6 cột trong bảng tính. Code như sau nhưng chạy báo lỗi , các bạn xem sửa giúp tôi với.
PHP:
Dim tento1, tento2, tento3, tento4, tento5, tento6 As String
2  For i = 2 To 200     '(chuoi lon nhat la 200 phần tử gồm các số tự nhiên)'
        tento1 = Cells(2, 4) '(gán chuỗi 1 = cell(2,4)'
4        asplit = Split(tento1, ",", Cells(2, 5)) ' số lượng phần tử chuỗi 1)'
        Cells(i, 6) = asplit(i - 2)  'tách chuỗi 1 gán vào dòng 2 cột 6)                   
6                  tento2 = Cells(3, 4)
                  asplit = Split(tento2, ",", Cells(3, 5))
8                  Cells(i, 7) = asplit(i - 2)                                   
                      tento3 = Cells(4, 4)
                      asplit = Split(tento3, ",", Cells(4, 5))
                      Cells(i, 8) = asplit(i - 2
                  tento4 = Cells(5, 4)
                  asplit = Split(tento4, ",", Cells(5, 5))
                  Cells(i, 9) = asplit(i - 2)                                                      
                       tento5 = Cells(6, 4)
                       asplit = Split(tento5, ",", Cells(6, 5))
                       Cells(i, 10) = asplit(i - 2)                  
                  tento6 = Cells(7, 4)
                  asplit = Split(tento6, ",", Cells(7, 5))
                  Cells(i, 11) = asplit(i - 2)
           Next i
Thứ nhất, lần sau bạn nên bỏ đoạn code thân iêu của bạn vô cú pháp
Mã:
. . . [/code.] hay [php]. . . [/php'] cho đễ nhìn; & có như vậy bạn sẽ nhận kết quả trợ giúp từ công dồng sẽ nhanh & chính xác hơn!
 Thứ nhì:
 Trước macro, bạn nên dùng câu lệnh [code]
Option Explicit
Điều này không bắt buôc, nhưng sẽ giúp ích rất nhiều, một khi bạn muốn tiến xa trên con đường VBA;
Cũng do bạn khai báo biến không ngọn ngành, nên dòng lệnh 4 & 5 mình không biết biến mảng hay biến thường; & như vậy phải chờ bạn cho biết thôi; Chứ làm sao dám sửa đây!!!
 
Upvote 0
Em sơ ý tong cách port bài mong các bác thông cảm. đoạn mã trên các biến asplit, split là các biến mảng. bác xem giúp em nhé.
 
Upvote 0
Nếu dữ liệu của bạn chỉ nằm trong 6 ô từ D2 đến D7, hãy dùng thử đoạn code sau:
Mã:
Sub Tach_chuoi()
Dim i As Integer, k As Integer
Dim asplit As Variant
Dim tento(1 To 6)
For i = 1 To 6
 tento(i) = Cells(i + 1, 4)
 asplit = Split(tento(i), ",")
     For k = 0 To UBound(asplit)
        Cells(k + 2, 7 + i) = (asplit(k))
     Next
asplit = ""
Next
End Sub
 

File đính kèm

Upvote 0
Mình hiện tại có 1 chuỗi " Tôn Đức Thắng" mình muốn tách thành " Thắng" "Đức" "Tôn" vậy ai biết có thể chỉ giúp mình .
 
Upvote 0
Bạn qua đây xem sẽ có đầy đủ luôn. Hoặc dùng tạm code bên dưới nha!
PHP:
Function TachTenPo(HoTen As String, Optional Vitri As Byte = 1) As String
'' Po_PiKachu
''Vtri = 1: Ho ; Vtri = 2: TenLot ; Vtri = 3: Ten ; Vtri = 4: HoTenlot
    Dim arr() As String
    Dim K As Long
    arr() = Split(HoTen, " ")
    K = UBound(arr)
    TachTenPo = Choose(Vitri, arr(0), Trim(Replace(Replace(HoTen, arr(K), ""), arr(0), "")), _
                       arr(K), Trim(Replace(HoTen, arr(K), "")))
End Function
Thân.
 
Upvote 0
Upvote 0
Web KT

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

Back
Top Bottom