Tách chuỗi theo quy luật - sau mỗi dấu chấm (.)

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

soledad_90

Thành viên thường trực
Tham gia
12/1/10
Bài viết
250
Được thích
43
Giới tính
Nam
1671770457950.png
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 ạ.
 

File đính kèm

  • 221223_tách chuỗi ký tự không theo quy luật.xlsx
    12 KB · Đọc: 19
Sửa lại tiêu đề đi nhé
"Tách chuỗi có quy luật"
 
Upvote 0
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 ạ.
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
 
Upvote 0
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
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 ạ.
Em dùng office 2019 không có hàm này ạ.
Bài đã được tự động gộp:

Sửa lại tiêu đề đi nhé
"Tách chuỗi có quy luật
Em đã sửa lại rồi anh.
Nhờ anh giúp cho đoạn code với ạ .
Em cảm ơn.
 
Upvote 0
Upvote 0
Này bác dùng text to column cho nhanh, code làm gì cho phức tạp
 
Upvote 0
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 ạ.
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.
 

File đính kèm

  • 221223_tách chuỗi ký tự không theo quy luật.xlsm
    20.6 KB · Đọc: 13
Upvote 0
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
 
Upvote 0
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 ạ.
Thử 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
 
Upvote 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.
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
Vác dao mổ trâu đi giết gà mất rồi.
 
Upvote 0
Vác dao mổ trâu đi giết gà mất rồi.
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.
 
Upvote 0
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 ạ.
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ồi :D
 

File đính kèm

  • 11111.JPG
    11111.JPG
    43.6 KB · Đọc: 6
  • 22222.JPG
    22222.JPG
    39.9 KB · Đọc: 6
Upvote 0
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ồi :D
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ấ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.

1671777374252.png
Bài đã được tự động gộp:

Này bác dùng text to column cho nhanh, code làm gì cho phức tạp
cảm ơn bạn nhé
Bài đã được tự động gộp:

Thử tham khảo, không biết có đúng ý không.
em cảm ơn hàm excel của anh , cho kết quả đúng rồi ạ
Thử 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
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 #Value
Bài đã được tự động gộp:

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 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 ạ. 1671778088860.png
Bài đã được tự động gộp:

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
Cảm ơn bạn giúp đỡ code cho kết quả đúng rồi nhé .
 
Lần chỉnh sửa cuối:
Upvote 0
Upvote 0

File đính kèm

  • 221223_tách chuỗi ký tự không theo quy luật_Thu.xlsx
    14.3 KB · Đọc: 7
Upvote 0
Bạn xem thử được không nhé!!
Cảm ơn bạn đã giúp đỡ với công thức .
Mã:
=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)
có thêm cột phụ của size lẻ :
 
Upvote 0
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ấ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
Thì lại thêm bước nối 2 cột cuối lại nữa bác :V
 
Upvote 0
Web KT
Back
Top Bottom