Tách 1 chuỗi kí tự thành nhiều ô theo quy luật

Liên hệ QC

vuasutu102tp

Thành viên mới
Tham gia
18/10/16
Bài viết
14
Được thích
1
Nhờ các bác chỉ giúp em
Em có 1 chuỗi kí tự gồm số 1 và số 2 rất dài. Giả sử là 11121211212221111112121...
Bác nào có thể giúp em tách dùng lệnh để tách chuỗi trên thành các ô theo quy luật ô này chứa các số 1 liên tiếp, hết sang ô tiếp theo chứa số 2, rồi số 1 như thế này:
111
2
1
2
11
2
1
222
...
Thank các bác
 
Nhờ các bác chỉ giúp em
Em có 1 chuỗi kí tự gồm số 1 và số 2 rất dài. Giả sử là 11121211212221111112121...
Bác nào có thể giúp em tách dùng lệnh để tách chuỗi trên thành các ô theo quy luật ô này chứa các số 1 liên tiếp, hết sang ô tiếp theo chứa số 2, rồi số 1 như thế này:
111
2
1
2
11
2
1
222
...
Thank các bác
A1=11121211212221111112121
Mã:
B1=TRIM(INDEX(MID(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE($A$1,"12","1|2"),"21","2|1"),"|",REPT(" ",100)),(ROW($1:$100)-1)*100+1,100),ROW($A1)))
Fill xuống dưới. hihi ^o^
 

File đính kèm

  • Catchuoi.xlsx
    9.7 KB · Đọc: 18
Cảm ơn bác nhiều nhé, vấn đề đã được giải quyết
Em đang tính làm, xem cách của anh cũng khá hay nhưng sao không rút gọn hơn nhỉ:
PHP:
=TRIM(MID(SUBSTITUTE(SUBSTITUTE($A$1;"12";"1"&REPT(" ";100)&"2");"21";"2"&REPT(" ";100)&"1");(ROW(1:1)-1)*100+1;100))
 
Nếu có nhiều ký tự khác nhau và không biết trước thì làm sao ta
Thì chơi công thức khủng vậy anh!
A1=aaa111bbbbbcccccccccdd222555556677777fffffrrr
Mã:
B1=MID($A$1,AGGREGATE(15,6,ROW($1:$100)/(IFERROR(MID($A$1,ROW($1:$100)-1,1),"")<>MID($A$1,ROW($1:$100),1)),ROW($A1)),AGGREGATE(15,6,ROW($1:$100)/(IFERROR(MID($A$1,ROW($1:$100)-1,1),"")<>MID($A$1,ROW($1:$100),1)),ROW($A2))-LEN(LEFT($A$1,AGGREGATE(15,6,ROW($1:$100)/(IFERROR(MID($A$1,ROW($1:$100)-1,1),"")<>MID($A$1,ROW($1:$100),1)),ROW($A1))-1))-1)
Ctrl+Shift+Enter fill xuống. hihi ^o^
 

File đính kèm

  • Catchuoi2.xlsx
    8.9 KB · Đọc: 15
Lần chỉnh sửa cuối:
Nhờ các bác chỉ giúp em
Em có 1 chuỗi kí tự gồm số 1 và số 2 rất dài. Giả sử là 11121211212221111112121...
Bác nào có thể giúp em tách dùng lệnh để tách chuỗi trên thành các ô theo quy luật ô này chứa các số 1 liên tiếp, hết sang ô tiếp theo chứa số 2, rồi số 1 như thế này:
111
2
1
2
11
2
1
222
...
Thank các bác
Cách khác, giả sử chuỗi tại A1, bạn dùng công thức này ở A5:
Mã:
A5=MID($A$1,SUM(LEN($A$4:A4))+1,MATCH(FALSE,EXACT(MID($A$1,SUM(LEN($A$4:A4))+1,1),MID($A$1,SUM(LEN($A$4:A4))+ROW($1:$100),1)),)-1)
Yêu cầu bấm Ctrl+Shift+Enter rồi copy xuống, đến khi #N/A thì dừng!!!
Áp dụng cho kí tự bất kì, phân biệt chữ hoa thường!!
 
A1=11121211212221111112121
Mã:
B1=TRIM(INDEX(MID(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE($A$1,"12","1|2"),"21","2|1"),"|",REPT(" ",100)),(ROW($1:$100)-1)*100+1,100),ROW($A1)))
Fill xuống dưới. hihi ^o^
Em đang tính làm, xem cách của anh cũng khá hay nhưng sao không rút gọn hơn nhỉ:
PHP:
=TRIM(MID(SUBSTITUTE(SUBSTITUTE($A$1;"12";"1"&REPT(" ";100)&"2");"21";"2"&REPT(" ";100)&"1");(ROW(1:1)-1)*100+1;100))

Gợi ý cho các chế rằng khi lập công thức đại kỵ dùng hàm trim, nếu dữ liệu của tui bị lỗi tui sẽ dùng nó để sửa một cách riêng biệt. lồng ghép theo kiểu trên sẽ cks ngày gãy cổ, thế dữ liệu của tui cố tình có hai khoảng trắng đứng cạnh với một mục đích nào đó, dùng hàm trim thành ra lại sai lòi tòi phòi, ai chịu đây.
 
Gợi ý cho các chế rằng khi lập công thức đại kỵ dùng hàm trim, nếu dữ liệu của tui bị lỗi tui sẽ dùng nó để sửa một cách riêng biệt. lồng ghép theo kiểu trên sẽ cks ngày gãy cổ, thế dữ liệu của tui cố tình có hai khoảng trắng đứng cạnh với một mục đích nào đó, dùng hàm trim thành ra lại sai lòi tòi phòi, ai chịu đây.
Em có 1 chuỗi kí tự gồm số 1 và số 2 rất dài
 
Góp vui thêm một cách:
Mã:
=REPLACE(REPLACE($A$1,AGGREGATE(15,6,ROW($1:$100)/(MID(" "&$A$1,ROW($1:$100),1)<>MID($A$1&" ",ROW($1:$100),1)),
ROW($A2)),LEN($A$1),""),1,AGGREGATE(15,6,ROW($1:$100)/(MID(" "&$A$1,ROW($1:$100),1)<>MID($A$1&" ",ROW($1:$100),1))-1,ROW($A1)),"")
 
Web KT
Back
Top Bottom