soledad_90
Thành viên thường trực




- Tham gia
- 12/1/10
- Bài viết
- 253
- Được thích
- 47
- Giới tính
- Nam
1. Dùng hàm TextSplitView attachment 284985
Mong sự trợ giúp từ diễn đàn cho việc tách chuỗi này ạ.
Với cột B là chuỗi gốc cần để tách ra 4 cột riêng biệt D-E-F-G .
Các cột cần tách được nối với nhau bằng giấu chấm (.)
Em cảm ơn diễn đàn ạ.
Cảm ơn anh giúp đỡ . như anh nói thì e phải theo PA 2 là nâng cấp office rồi ạ.1. Dùng hàm TextSplit
=TEXTSPLIT(B3,".")
2. Nếu không có hàm textsplit thì nâng cấp phiên bản excel 365
Em đã sửa lại rồi anh.Sửa lại tiêu đề đi nhé
"Tách chuỗi có quy luật
Dùng textcolumn phải hơn không code chi cho rắc muối raView attachment 284985
Mong sự trợ giúp từ diễn đàn cho việc tách chuỗi này ạ.
Với cột B là chuỗi gốc cần để tách ra 4 cột riêng biệt D-E-F-G .
Các cột cần tách được nối với nhau bằng giấu chấm (.)
Em cảm ơn diễn đàn ạ.
Thử tham khảo, không biết có đúng ý không.Em đã sửa lại rồi anh.
Nếu chỉ lấy 4 cột và dữ liệu như trong bài thì hãy thử code này xem sao.View attachment 284985
Mong sự trợ giúp từ diễn đàn cho việc tách chuỗi này ạ.
Với cột B là chuỗi gốc cần để tách ra 4 cột riêng biệt D-E-F-G .
Các cột cần tách được nối với nhau bằng giấu chấm (.)
Em cảm ơn diễn đàn ạ.
Sub tach_chuoi()
Dim lr&, i&, Arr(), Res(1 To 10000, 1 To 4), k&, a&
With Sheets("Sheet1")
lr = .Range("B" & Rows.Count).End(xlUp).Row
Arr = .Range("B3:B" & lr).Value
For i = 1 To UBound(Arr)
k = k + 1
Res(k, 1) = Split(Arr(i, 1), ".")(0)
Res(k, 2) = Split(Arr(i, 1), ".")(1)
Res(k, 3) = Split(Arr(i, 1), ".")(2)
a = Len(Res(k, 1)) + Len(Res(k, 2)) + Len(Res(k, 3))
Res(k, 4) = Mid(Arr(i, 1), a + 4, 10)
Next i
.Range("I3").Resize(k, 4).Value = Res
End With
End Sub
Thử dùng công thức này:View attachment 284985
Mong sự trợ giúp từ diễn đàn cho việc tách chuỗi này ạ.
Với cột B là chuỗi gốc cần để tách ra 4 cột riêng biệt D-E-F-G .
Các cột cần tách được nối với nhau bằng giấu chấm (.)
Em cảm ơn diễn đàn ạ.
D3=LEFT(B3,7)
E3=MID(B3,LEN(D3)+2,8)
F3=MID(B3,SUM(LEN(D3:E3))+3,3)
G3=MID(B3,SUM(LEN(D3:F3))+4,10)+0
Nếu chỉ lấy 4 cột và dữ liệu như trong bài thì hãy thử code này xem sao.
Vác dao mổ trâu đi giết gà mất rồi.Bạn kiểm tra lại kết quả nhé
PHP:Sub tach_chuoi() Dim lr&, i&, Arr(), Res(1 To 10000, 1 To 4), k&, a& With Sheets("Sheet1") lr = .Range("B" & Rows.Count).End(xlUp).Row Arr = .Range("B3:B" & lr).Value For i = 1 To UBound(Arr) k = k + 1 Res(k, 1) = Split(Arr(i, 1), ".")(0) Res(k, 2) = Split(Arr(i, 1), ".")(1) Res(k, 3) = Split(Arr(i, 1), ".")(2) a = Len(Res(k, 1)) + Len(Res(k, 2)) + Len(Res(k, 3)) Res(k, 4) = Mid(Arr(i, 1), a + 4, 10) Next i .Range("I3").Resize(k, 4).Value = Res End With End Sub
Bạn này cũng biết code VBA mà, nên có thể đây chỉ là 1 công đoạn nào đó trong dự án dài, rộng hơn của bạn ấy. Do vậy chủ thớt mới đăng trong mục lập trình để tìm phuong án xử lý 1 cột để lấy dữ liệu xử lý các vấn đề khác. Đó là tôi đoán mò thế thôi.Vác dao mổ trâu đi giết gà mất rồi.
nếu theo quy luật như này b vào Data > Text to columns > Next > trong mục Delimiters chọn Other (.) > Finish là xong rồiView attachment 284985
Mong sự trợ giúp từ diễn đàn cho việc tách chuỗi này ạ.
Với cột B là chuỗi gốc cần để tách ra 4 cột riêng biệt D-E-F-G .
Các cột cần tách được nối với nhau bằng giấu chấm (.)
Em cảm ơn diễn đàn ạ.
Cảm ơn bạn đã giúp đỡ : mình có làm theo thì có điểm này : vì phần size lẻ : quy chuẩn đang có dấu chấm (.) trùng với phần phân tách các chuỗi luôn là dấu chấmnếu theo quy luật như này b vào Data > Text to columns > Next > trong mục Delimiters chọn Other (.) > Finish là xong rồi![]()
cảm ơn bạn nhéNày bác dùng text to column cho nhanh, code làm gì cho phức tạp
em cảm ơn hàm excel của anh , cho kết quả đúng rồi ạThử tham khảo, không biết có đúng ý không.
em cảm ơn hàm excel của anh , tại ô F3=MID(B3,SUM(LEN(D3:E3))+3,3) hàm em thấy lỗi #ValueThử dùng công thức này:
Diff:D3=LEFT(B3,7) E3=MID(B3,LEN(D3)+2,8) F3=MID(B3,SUM(LEN(D3:E3))+3,3) G3=MID(B3,SUM(LEN(D3:F3))+4,10)+0
Cảm ơn anh giúp đỡ . code của anh cho kết quả phần size lẻ lại là dấu phẩy ạ .phần em tô vàng ạ.Nếu chỉ lấy 4 cột và dữ liệu như trong bài thì hãy thử code này xem sao.
Cảm ơn bạn giúp đỡ code cho kết quả đúng rồi nhé .Bạn kiểm tra lại kết quả nhé
PHP:Sub tach_chuoi() Dim lr&, i&, Arr(), Res(1 To 10000, 1 To 4), k&, a& With Sheets("Sheet1") lr = .Range("B" & Rows.Count).End(xlUp).Row Arr = .Range("B3:B" & lr).Value For i = 1 To UBound(Arr) k = k + 1 Res(k, 1) = Split(Arr(i, 1), ".")(0) Res(k, 2) = Split(Arr(i, 1), ".")(1) Res(k, 3) = Split(Arr(i, 1), ".")(2) a = Len(Res(k, 1)) + Len(Res(k, 2)) + Len(Res(k, 3)) Res(k, 4) = Mid(Arr(i, 1), a + 4, 10) Next i .Range("I3").Resize(k, 4).Value = Res End With End Sub
Bạn xem lại hình ảnh ngay từ bài 1 chưa nhỉ?Ngay cả file đính kèm cũng là dấu "," mà. Sửa lại thì thay dấu "," thành dấu "." là được.Cảm ơn anh giúp đỡ . code của anh cho kết quả phần size lẻ lại là dấu phẩy ạ .phần em tô vàng ạ. View attachment 284998
Dạ anh . chỗ này em làm ổn ạ .,,,,,,
Bạn xem lại hình ảnh ngay từ bài 1 chưa nhỉ?Ngay cả file đính kèm cũng là dấu "," mà. Sửa lại thì thay dấu "," thành dấu "." là được.
Bạn xem thử được không nhé!!View attachment 284985
Mong sự trợ giúp từ diễn đàn cho việc tách chuỗi này ạ.
Với cột B là chuỗi gốc cần để tách ra 4 cột riêng biệt D-E-F-G .
Các cột cần tách được nối với nhau bằng giấu chấm (.)
Em cảm ơn diễn đàn ạ.
Cảm ơn bạn đã giúp đỡ với công thức .Bạn xem thử được không nhé!!
=IF(M5="",TRIM(MID(SUBSTITUTE(TRIM($B5),".",REPT(" ",LEN($B5))),1+(COLUMNS($B:E)-1)*LEN($B5),LEN($B5))),TRIM(MID(SUBSTITUTE(TRIM($B5),".",REPT(" ",LEN($B5))),1+(COLUMNS($B:E)-1)*LEN($B5),LEN($B5)))&"."&M5)
Thì lại thêm bước nối 2 cột cuối lại nữa bác :VCảm ơn bạn đã giúp đỡ : mình có làm theo thì có điểm này : vì phần size lẻ : quy chuẩn đang có dấu chấm (.) trùng với phần phân tách các chuỗi luôn là dấu chấm
Nên khi dùng Text to columns ra kết quả khác thì đúng còn các chuỗi có đuôi số size lẻ thì chưa đúng.
View attachment 284997