Lỗi tách chuỗi bằng VBA

Liên hệ QC

thao nguyen01

Thành viên thường trực
Tham gia
8/12/19
Bài viết
241
Được thích
30
Kính gửi anh/chị trên diễn đàn,

em muốn lấy những ô có nội dung bán xe, lấy loại xe sau chữ "BÁN XE", trước dấu phẩy ạ. Em có viết code nhưng báo lỗi ạ. Anh/chị xem giúp em ạ.

Em cảm ơn anh/chị ạ

Sub tachchuoi()
Dim i As Long, J As Long, jj As Long
Dim Kitu As String
Kitu = "BÁN XE"
Dim Dcuoi As Long, Arr_N(), Arr1, Arr_D(), Arr2
Dcuoi = Sheet1.Range("a100000").End(xlUp).Row
Arr_N = Sheet1.Range("a2:a" & Dcuoi)
ReDim Arr_D(1 To UBound(Arr_N, 1), 1 To 1)
For i = 1 To UBound(Arr_N, 1)
If Left(Arr_N(i, 1), 6) = Kitu Then
Arr1 = Split(Arr_N(i, 1), ",")
Arr_D(i, 1) = Right(Arr1, Len(Arr1) - 7)
End If
Next
Sheet1.Range("E7:Z100000").Clear
Sheet1.Range("E7").Resize(UBound(Arr_N, 1), 1) = Arr_D
End Sub
 

File đính kèm

Kính gửi anh/chị trên diễn đàn,

em muốn lấy những ô có nội dung bán xe, lấy loại xe sau chữ "BÁN XE", trước dấu phẩy ạ. Em có viết code nhưng báo lỗi ạ. Anh/chị xem giúp em ạ.

Em cảm ơn anh/chị ạ

Sub tachchuoi()
Dim i As Long, J As Long, jj As Long
Dim Kitu As String
Kitu = "BÁN XE"
Dim Dcuoi As Long, Arr_N(), Arr1, Arr_D(), Arr2
Dcuoi = Sheet1.Range("a100000").End(xlUp).Row
Arr_N = Sheet1.Range("a2:a" & Dcuoi)
ReDim Arr_D(1 To UBound(Arr_N, 1), 1 To 1)
For i = 1 To UBound(Arr_N, 1)
If Left(Arr_N(i, 1), 6) = Kitu Then
Arr1 = Split(Arr_N(i, 1), ",")
Arr_D(i, 1) = Right(Arr1, Len(Arr1) - 7)
End If
Next
Sheet1.Range("E7:Z100000").Clear
Sheet1.Range("E7").Resize(UBound(Arr_N, 1), 1) = Arr_D
End Sub
Thử sửa dòng trên thành dòng dưới xem sao
Mã:
'Arr_D(i, 1) = Right(Arr1, Len(Arr1) - 7)
Arr_D(i, 1) = Right(Arr1(0), Len(Arr1(0)) - 7)
 
Upvote 0
Thử sửa dòng trên thành dòng dưới xem sao
Mã:
'Arr_D(i, 1) = Right(Arr1, Len(Arr1) - 7)
Arr_D(i, 1) = Right(Arr1(0), Len(Arr1(0)) - 7)

Em cảm ơn anh. Anh có thể giải thích giúp em là Arr1(0), số 0 là gì ạ, có khi nào có số khác 0 không anh. Em đang tìm hiểu nên không hiểu chỗ này ạ. Em cảm ơn anh
 
Upvote 0
Em cảm ơn anh. Anh có thể giải thích giúp em là Arr1(0), số 0 là gì ạ, có khi nào có số khác 0 không anh. Em đang tìm hiểu nên không hiểu chỗ này ạ. Em cảm ơn anh
Bạn dùng Hàm Split nó sẽ tách 1 chuỗi thành 1 mảng có các phần tử từ 0 đến ubound(arr1) nên Arr1(0) là phần tử đầu tiên của mảng được tách ra.
 
Upvote 0
Bài này đáng lẽ không dùng hàm Split, chỉ rắc rối thêm.
Kitu = "BÁN XE*"
...
If Arr_N(i, 1) Like Kitu Then
Arr1 = Left(Arr_N(i, 1), InStr(Arr_N(i, 1)&",", ",")-1) ' lấy tất cả các ký tự trước dấu phẩy
Arr_D(i, 1) = Right(Arr1, Len(Arr1) - 7)
End If
 
Upvote 0
Bài này đáng lẽ không dùng hàm Split, chỉ rắc rối thêm.
Kitu = "BÁN XE*"
...
If Arr_N(i, 1) Like Kitu Then
Arr1 = Left(Arr_N(i, 1), InStr(Arr_N(i, 1)&",", ",")-1) ' lấy tất cả các ký tự trước dấu phẩy
Arr_D(i, 1) = Right(Arr1, Len(Arr1) - 7)
End If

dạ, em cảm ơn Thầy nhiều ạ. Nhưng em có thắc mắc là code có InStr(Arr_N(i, 1) & ","

Em nghĩ phần &"," hình như hơi dư ạ. Vì Left(Arr_N(i, 1), InStr(Arr_N(i, 1), ",")-1) em nghĩ là đủ, nhưng em không biết em có bỏ sót trường hợp nào không, Thầy có thể giải thích chỗ đó giúp em với ạ. Em cảm ơn Thầy ạ.
 
Upvote 0
dạ, em cảm ơn Thầy nhiều ạ. Nhưng em có thắc mắc là code có InStr(Arr_N(i, 1) & ","

Em nghĩ phần &"," hình như hơi dư ạ. Vì Left(Arr_N(i, 1), InStr(Arr_N(i, 1), ",")-1) em nghĩ là đủ, nhưng em không biết em có bỏ sót trường hợp nào không, Thầy có thể giải thích chỗ đó giúp em với ạ. Em cảm ơn Thầy ạ.
Dự phòng chuỗi không có dấu phẩy.
 
Upvote 0
Web KT

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

Back
Top Bottom