Xử lý chuỗi ký tự

Liên hệ QC

Oanhnhunguyen2610

Thành viên mới
Tham gia
24/3/20
Bài viết
26
Được thích
0
Chào Anh/Chị.
Nhờ anh chị hỗ trợ xử lý chuỗi ký tự như file gửi kèm giúp ạ.
Cảm ơn anh chị.
1663078863171.png
 

File đính kèm

  • Tach chuoi text.xlsx
    16.4 KB · Đọc: 20
Chào Anh/Chị.
Nhờ anh chị hỗ trợ xử lý chuỗi ký tự như file gửi kèm giúp ạ.
Cảm ơn anh chị.
View attachment 280981
Hướng dẫn làm thủ công, bạn tự làm nhé:
1/ Replace toàn bộ "Outer: " và "Inner: " thành rỗng (Sau dấu hai chấm có khoảng trắng)
2/ Vào Data -> Chọn công cụ text to column -> Chọn delimited -> next -> bỏ tick ở "tab" và tick chọn "other" -> tại ô trống bên phải "other", bấm Ctrl + J (không bấm dấu + ) -> Finish (chỗ này nếu phân tách ra là chuỗi thì không sao, nhưng nếu là dạng số bắt đầu bằng số 0 thì phải chọn next, định dạng text cho các cột rồi mới tới finish)
3/ Theo dữ liệu bạn đưa, một số ô chỉ có 2 dòng thì sau khi phân tách, cột thứ 3 (cột kết quả cuối của text to column) bằng giá trị cột thứ 2, cách làm chỗ này như sau:
- Chọn vùng dữ liệu cột 3
- Bấm F5 (hoặc Ctrl + G) -> Special -> Blanks -> OK
- Xem ô không có dữ liệu đầu tiên trong cột thứ 3 là ô nào (Ví dụ ô đầu tiên là D5) thì khi đó gõ công thức =C5 rồi ấn Ctrl+Enter
Xong!
Có thể hơi dài dòng để bạn hiểu, nhưng làm thì rất nhanh
 
Chào Anh/Chị.
Nhờ anh chị hỗ trợ xử lý chuỗi ký tự như file gửi kèm giúp ạ.
Cảm ơn anh chị.
Thực hiện theo trình tự các bước sau:
1/ Bước 1 Sử dụng hộp thoại Find and Replace để thay thế những chỗ Alt + Enter bằng cách: Click chọn Cell đầu tiên là B4 rồi nhấn tổ hợp phím Ctrl + Shift và nhấn nút mũi tên xuống để chọn hết dữ liệu cột B. Xong nhấn nút Ctrl + H hộp thoại Find and Replace hiện ra. Click vào khung Find what nhấn tổ hợp Ctrl + Enter Tiếp heo Click vào khung Replace gõ dấu phẩy . Xong nhấn nút Replace All xong nhấn nút OK rồi đóng hộp thoại.
2/ Tiếp theo sử dụng công cụ Text to Columns bằng cách: Vào Data > Text to Columns -> Chọn Delimited và nhấn Next. Hộp thoại Step 2 of 3 hiện ra gõ dấu phẩy vào khung bên phải mục Other và nhấn Next. Hộp thoại Step 3 of 3 hiện ra thì Click vào khung Destination rồi Click vào Cell C6. Xiong nhấn nút Finish.
3/ Theo dữ liệu cột B thì có Cell chỉ chứa 2 nội dung nên sau khi phân tách, cột E thiếu dữ liệu, để bổ sung dữ liệu làm như sau: Chọn dòng 5 rồi vào Data > Filter vào cột E bỏ chọn mục (Select All) và chọn (Blanks) rồi nhấn OK, tiếp theo chọn dữ liệu cột D rồi Fill sang là hoàn tất.
 
Bạn mình tham khảo thêm cách này xem sao.
Nhấn vào mũi tên rồi kiểm tra kết quả nhé!

PHP:
Sub tach_chuoi()
Dim Arr(), Res(), i As Long, Lr As Long, k As Long, b2 As Long
Dim dem As Long, a As Long, b As Long, b1 As Long
    With Sheets("Sheet1")
        Lr = .Range("B" & Rows.Count).End(xlUp).Row
        Arr = .Range("B6:B" & Lr).Value
        ReDim Res(1 To UBound(Arr), 1 To 3)
        For i = 1 To UBound(Arr)
            If Arr(i, 1) <> "" Then
                k = k + 1
                For a = 1 To Len(Arr(i, 1))
                    If Mid(Arr(i, 1), a, 1) = chr(10) Then
                        dem = dem + 1
                    End If
                Next a
                If dem = 1 Then
                    b = InStr(Arr(i, 1), chr(10))
                    Res(k, 1) = Mid(Arr(i, 1), 1, b - 1)
                    Res(k, 2) = Trim(Mid(Arr(i, 1), b + 1, 100))
                    Res(k, 3) = Trim(Mid(Arr(i, 1), b + 1, 100))
                ElseIf dem = 2 Then
                    b1 = InStr(Arr(i, 1), "O")
                    b2 = InStr(Arr(i, 1), "I")
                    Res(k, 1) = Mid(Arr(i, 1), 1, b1 - 1)
                    Res(k, 2) = Trim(Mid(Arr(i, 1), b1 + 6, b2 - b1 - 6))
                    Res(k, 3) = Trim(Mid(Arr(i, 1), b2 + 7, 100))
                End If
                dem = 0: b = 0: b1 = 0: b2 = 0
            End If
        Next i
        .Range("G6").Resize(k, 3).Value = Res
    End With
End Sub
 

File đính kèm

  • Tach chuoi text.xlsm
    25.5 KB · Đọc: 10
Chào Anh/Chị.
Nhờ anh chị hỗ trợ xử lý chuỗi ký tự như file gửi kèm giúp ạ.
Cảm ơn anh chị.

Muốn dùng công thức, thử trong C6:

=TRIM(LEFT(SUBSTITUTE(B6,CHAR(10),REPT(" ",100)),100))

Trong D6:

=TRIM(MID(SUBSTITUTE(SUBSTITUTE(B6,"Outer:",""),CHAR(10),REPT(" ",100)),100,100))

Và trong E6:

=TRIM(RIGHT(SUBSTITUTE(SUBSTITUTE(B6,"Inner:",""),CHAR(10),REPT(" ",100)),100))

.
 
Web KT
Back
Top Bottom