Sóc trăng miền nhớ
Thành viên mới
- Tham gia
- 3/6/20
- Bài viết
- 15
- Được thích
- 0
Ngoài các cách trên thì dùng công thức này tại B1 (công thức rất quen thuộc ở GPE):Các bạn cho mình xin code VBA tách chuổi sau ký tự "\", sang một ô khác
File mong muốn kết quả (phần tô vàng)
Note: số lượng dòng có thể nhiều hơn
xin cảm ơn
=TRIM(MID(SUBSTITUTE($A1,"\",REPT(" ",100)),100*(COLUMN(A1)-1)+1,100))
Còn đây là code VBA. Kết quả điền vào vùng bắt đầu từ ô B1 như file mẫu. Bạn có thể sửa lại địa chỉ trong code.Các bạn cho mình xin code VBA tách chuổi sau ký tự "\", sang một ô khác
File mong muốn kết quả (phần tô vàng)
Note: số lượng dòng có thể nhiều hơn
xin cảm ơn
Tôi tính viết thêm bài phân tích ủng hộ việc dùng TextToColumns. Nhưng nhìn lại, thành viên 6 tháng chắc coi như "mới", nói tùm lum làm cho họ "sợ".Dễ nhất là dùng TextToColumns.
Sao không dùng hàm Split cho nó đơn giản nhỉ.
Hi, mình không rành nên mới nhờ các bạn.Dùng hàm Split trong VBA là được nhé bạn.
Thử sử dụng File. Copy dữ liệu Paste vào A4 rồi nhấn nút.Các bạn cho mình xin code VBA tách chuổi sau ký tự "\", sang một ô khác
File mong muốn kết quả (phần tô vàng)
Note: số lượng dòng có thể nhiều hơn
xin cảm ơn
Split thì chắc thế này (Chế biến từ code bác Maika):Hi, mình không rành nên mới nhờ các bạn.
Option Explicit
Sub TachDuongDan()
Dim i As Long, j As Long, k As Long
Dim arrS, arrT, Tmp
arrS = Range("A1:A" & Range("A65536").End(xlUp).Row).Value
ReDim arrT(1 To UBound(arrS, 1), 1 To 100)
For i = 1 To UBound(arrS, 1)
Tmp = Split(arrS(i, 1), "\")
If UBound(Tmp) + 1 > k Then k = UBound(Tmp) + 1
For j = 0 To UBound(Tmp)
arrT(i, j + 1) = Tmp(j)
Next
Next
Range("B1").Resize(1000, 100).ClearContents
Range("B1").Resize(UBound(arrS, 1), k).Value = arrT
End Sub
Ờ nhỉ. Mình quên mất split dù dùng mấy lần rồiSplit thì chắc thế này (Chế biến từ code bác Maika):
Mã:Option Explicit Sub TachDuongDan() Dim i As Long, j As Long, k As Long Dim arrS, arrT, Tmp arrS = Range("A1:A" & Range("A65536").End(xlUp).Row).Value ReDim arrT(1 To UBound(arrS, 1), 1 To 100) For i = 1 To UBound(arrS, 1) Tmp = Split(arrS(i, 1), "\") If UBound(Tmp) + 1 > k Then k = UBound(Tmp) + 1 For j = 0 To UBound(Tmp) arrT(i, j + 1) = Tmp(j) Next Next Range("B1").Resize(1000, 100).ClearContents Range("B1").Resize(UBound(arrS, 1), k).Value = arrT End Sub
Sau mỗi dấu "\" là sang một cells mới bác ơi. thanks ạChỉ 1 dòng lệnh
Sub Macro()
Range("A1", Range("A65536").End(xlUp)).TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, OtherChar:="\"
End Sub
Thanks bácNgắn và dỏm :
Sub NganVaDom()
For i = 1 To Range("A65536").End(xlUp).Row
s = Split(Cells(i, "A").Value, "\")
Cells(i, "B").Resize(, UBound(s) - LBound(s) + 1).Value = Application.Transpose(Application.Transpose(s))
Next i
End Sub
Xin phép trả lại bạn. Tôi không nhận tiếng Tây.Thanks bác
Thiếu 1 lệnhSau mỗi dấu "\" là sang một cells mới bác ơi. thanks ạ
Bài đã được tự động gộp:
Thanks bác
Sub Macro()
Range("A1", Range("A65536").End(xlUp)).TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, Other:=True, OtherChar:="\"
End Sub