kiendaide1
Thành viên chính thức
- Tham gia
- 3/4/13
- Bài viết
- 93
- Được thích
- 4
Dùng Split để tách ra nhéEm muốn tách dư liệu trước từng dấu phẩy ở cột C thành từng dong và các dư liệu ở các cột khác tự động copy theo dư liệu đã tách ở cột C tương ứng. em có dư liệu và sheet dư liệu tách mong muốn các bác giúp hộ em với ạ
Hàm này mới quá nhỉ. Nghe giống như tốc độ cao.Dùng Spit để tách ra nhé
Thử code nàyEm muốn tách dư liệu trước từng dấu phẩy ở cột C thành từng dong và các dư liệu ở các cột khác tự động copy theo dư liệu đã tách ở cột C tương ứng. em có dư liệu và sheet dư liệu tách mong muốn các bác giúp hộ em với ạ
Sub Tach()
Dim sArr(), dArr(), i As Long, n As Long, Tach As Variant, k As Long
With Sheets("Sheet1")
sArr = .Range("A3", .Range("A" & Rows.Count).End(3)).Resize(, 3).Value
End With
ReDim dArr(1 To UBound(sArr) * 100, 1 To 3)
For i = 1 To UBound(sArr)
If sArr(i, 3) <> Empty Then
Tach = Split(sArr(i, 3), ",")
For n = LBound(Tach) To UBound(Tach)
k = k + 1
dArr(k, 1) = k
dArr(k, 2) = sArr(i, 2)
dArr(k, 3) = CDate(Tach(n))
Next
Else
k = k + 1
dArr(k, 1) = k
dArr(k, 2) = sArr(i, 2)
End If
Next
Sheets("Sheet1").Range("D3").Resize(k, UBound(dArr, 2)) = dArr
End Sub
Em cam ơn bác ạThử code này
Mã:Sub Tach() Dim sArr(), dArr(), i As Long, n As Long, Tach As Variant, k As Long With Sheets("Sheet1") sArr = .Range("A3", .Range("A" & Rows.Count).End(3)).Resize(, 3).Value End With ReDim dArr(1 To UBound(sArr) * 100, 1 To 3) For i = 1 To UBound(sArr) If sArr(i, 3) <> Empty Then Tach = Split(sArr(i, 3), ",") For n = LBound(Tach) To UBound(Tach) k = k + 1 dArr(k, 1) = k dArr(k, 2) = sArr(i, 2) dArr(k, 3) = CDate(Tach(n)) Next Else k = k + 1 dArr(k, 1) = k dArr(k, 2) = sArr(i, 2) End If Next Sheets("Sheet1").Range("D3").Resize(k, UBound(dArr, 2)) = dArr End Sub
Hihi. em đã cập nhật lại từ sai ạHàm này mới quá nhỉ. Nghe giống như tốc độ cao.