Tách chuỗi liền nhau phân biệt chữ Viết Hoa !

Mong GPE giúp đỡ
Tôi có các tên Viết liền nhau:
A1 = HoangAnh
Tôi muốn B1 = Hoang Anh, C1 = Hoang, D1 = Anh
Xin cảm ơn!

Đã được trả lời, câu trả lời tốt nhất:
Bởi anh huuthang_bd :

C1=MID(LEFT($A1,SMALL(IF(EXACT(TRIM(MID($A1,ROW($1:$50),1)),UPPER(MID($A1,ROW($1:$50),1))),ROW($1:$50)),COLUMN(B1))-1),SUM(LEN($B1:B1))+1,50)

Ctrl + Shift + Enter
Code VBA bởi excel_lv1.5:
Dùng code VBA:

Function tach(str As String, Optional n As Long = 1)
With CreateObject("vbscript.regexp")
    .Global = True: .Pattern = "[A-Z][a-z]*"
    tach = .Execute(str)(n - 1)
End With
End Function

Sau đó dùng công thức : =IFERROR(tach($A1,COLUMN(A1)),"")

Làm công thức mảng bạn tham khảo, Ctrl + Shift + Enter

=MID($A$1,SMALL(IFERROR(IF(CODE(MID($A$1&" ",ROW(1:50),1))=CODE(MID(UPPER($A$1&" "),ROW(1:50),1)),ROW(1:50),""),""),COLUMN(A1)),SMALL(IFERROR(IF(CODE(MID($A$1&" ",ROW(1:50),1))=CODE(MID(UPPER($A$1&" "),ROW(1:50),1)),ROW(1:50),""),""),COLUMN(B1))-SMALL(IFERROR(IF(CODE(MID($A$1&" ",ROW(1:50),1))=CODE(MID(UPPER($A$1&" "),ROW(1:50),1)),ROW(1:50),""),""),COLUMN(A1)))

Thêm cách khác, dùng công thức mảng này tại C1:

=TRIM(MID(REPLACE($A1,SMALL(IF(EXACT(MID($A1,ROW($1:$100),1),UPPER(MID($A1,ROW($1:$100),1))),ROW($1:$100)),COLUMN(B1)),,REPT(" ",100)),1+SUM(LEN($B1:B1)),100))

Yêu cầu bấm Ctrl+Shift+Enter rồi copy sang phải, copy xuống!!!

Dùng code VBA:

Function tach(str As String, Optional n As Long = 1)

With CreateObject("vbscript.regexp")

.Global = True: .Pattern = "[A-Z][a-z]*"

tach = .Execute(str)(n - 1)

End With

End Function

Sau đó dùng công thức : =IFERROR(tach($A1,COLUMN(A1)),"")

Cảm ơn excel_lv1.5 , nhưng sau khi tôi thử tách:
A1 = Hoang Anh (có khoảng trắng) thì C1 = Hoang, D1 =" " (cho kết quả khoảng trắng), E1=Anh, F1 = h
với công thức của dhn46 thì F1 =" " (cho kết quả khoảng trắng)
A1 = Le Hoang Anh thì C1 = Le,D1 = " ",E1 = Hoang, F1 = g, G1 = Anh, H1 = h
code VBA chuẩn hơn không có " " xen giữa
khi A1 =こんにちは tiếng Nhật thì 2 công thức mảng tách rất chính xác
riêng code thì không cho kết quả
mong excel_lv1.5 xem và giúp, và tôi sẽ sữa câu hỏi lại cho chính xác

Bạn thử vầy xem:

=MID(LEFT($A1,SMALL(IF(EXACT(TRIM(MID($A1,ROW($1:$50),1)),UPPER(MID($A1,ROW($1:$50),1))),ROW($1:$50)),COLUMN(B1))-1),SUM(LEN($B1:B1))+1,50)

www.giaiphapexcel.com/diendan/threads/t%C3%A1ch-chu%E1%BB%97i-li%E1%BB%81n-nhau-ph%C3%A2n-bi%E1%BB%87t-ch%E1%BB%AF-vi%E1%BA%BFt-hoa.131284/post-825937

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
Chia sẻ: