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

Chia sẻ bởi:hands
★★★★★
Quảng cáo

1050
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

www.giaiphapexcel.com/diendan/threads/t%C3%A1ch-chu%E1%BB%97i-theo-quy-lu%E1%BA%ADt-sau-m%E1%BB%97i-d%E1%BA%A5u-ch%E1%BA%A5m.163621/post-1091328

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 ạ.

Thử tham khảo, không biết có đúng ý không.

www.giaiphapexcel.com/diendan/threads/t%C3%A1ch-chu%E1%BB%97i-theo-quy-lu%E1%BA%ADt-sau-m%E1%BB%97i-d%E1%BA%A5u-ch%E1%BA%A5m.163621/post-1091335

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.

www.giaiphapexcel.com/diendan/threads/t%C3%A1ch-chu%E1%BB%97i-theo-quy-lu%E1%BA%ADt-sau-m%E1%BB%97i-d%E1%BA%A5u-ch%E1%BA%A5m.163621/post-1091337

Bạn kiểm tra lại kết quả nhé

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:

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

www.giaiphapexcel.com/diendan/threads/t%C3%A1ch-chu%E1%BB%97i-theo-quy-lu%E1%BA%ADt-sau-m%E1%BB%97i-d%E1%BA%A5u-ch%E1%BA%A5m.163621/post-1091339

Khóa học Power PI – Ứng dung trong Nhân sự
Khóa học SprinGO phù hợp

Khóa học Power PI – Ứng dung trong Nhân sự

TỔNG QUAN KHÓA HỌC: POWER BI CHO NGÀNH NHÂN SỰ Khóa học Power BI cho Nhân sự được thiết kế dành riêng cho các...

Xem khóa học
★★★★★ 5 ★ 1 👤 1 ▥ 0
Quảng cáo

Bạn nên đọc

One Response

  1. hands says:

    Excel 2021 là được rồi.

    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é

    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.

    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 😀
    1361

    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.

    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.

    cảm ơn bạn nhé

    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:

    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

    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 ạ.
    1362

    Cảm ơn bạn giúp đỡ code cho kết quả đúng rồi nhé .

    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 bạn đã giúp đỡ với công thức .

    =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ẻ :

    Gộp 2 công thức bài #6 thành 1 công thức.

    Dạ anh . chỗ này em làm ổn ạ .
    Em cảm ơn anh giúp đỡ trên các bài em đã đăng ạ .

Leave a Reply

Your email address will not be published. Required fields are marked *

Quảng cáo

Cũ vẫn chất

Xem thêm