Tách chuỗi có điều kiện bằng công thức

Liên hệ QC

tocxuu

Thành viên mới
Tham gia
9/12/15
Bài viết
16
Được thích
9
Em chào các anh chị trong diễn đàn,
Em có vấn đề cần tách chuỗi như hình. Em muốn sử dụng công thức - không dùng VBA ạ.
Nhờ các anh chị giúp đỡ.
Em xin chân thành cảm ơn.
Tocxuu,

1585994308245.png
 
Lần chỉnh sửa cuối:
Quy tắc của số 3 và số 2 lại không giống 1 và 4 à bạn?
 
Mình giúp bạn chân tình nek tại ô C2
=REPT(B2,LEN($A$2)-LEN(SUBSTITUTE($A$2,B2,"")))
Cảm ơn bạn. Công thức rất dễ hiểu và dễ nhớ.
Nếu mình bỏ dữ liệu ở cột B, có cách nào truy xuất được dữ liệu như ở cột C bằng công thức không nhỉ?
Giống như kiểu mình dùng REGULAR EXPRESSION tách chuỗi ấy.
Mình chân thành cảm ơn,
 
Cảm ơn bạn. Công thức rất dễ hiểu và dễ nhớ.
Nếu mình bỏ dữ liệu ở cột B, có cách nào truy xuất được dữ liệu như ở cột C bằng công thức không nhỉ?
Giống như kiểu mình dùng REGULAR EXPRESSION tách chuỗi ấy.
Mình chân thành cảm ơn,
Ví dụ bạn muốn xuất kết quả số 1 thì đổi b2 thành 1

=REPT(1,LEN($A$2)-LEN(SUBSTITUTE($A$2,1,"")))
 
Ví dụ bạn muốn xuất kết quả số 1 thì đổi b2 thành 1

=REPT(1,LEN($A$2)-LEN(SUBSTITUTE($A$2,1,"")))
Mình cảm ơn bạn.
Theo công thức bạn hướng dẫn thì phải thay 1 = Row(A1)
Nhưng sẽ có nhưng ô bị rỗng vì khi kéo công thức xuống phải theo thứ tự. ROW(A1), ROW(A2)....
Không biết có cách nào liệt kê mà không bị RỖNG không nhỉ?
Mình chân thành cảm ơn.
 
Mình cảm ơn bạn.
Theo công thức bạn hướng dẫn thì phải thay 1 = Row(A1)
Nhưng sẽ có nhưng ô bị rỗng vì khi kéo công thức xuống phải theo thứ tự. ROW(A1), ROW(A2)....
Không biết có cách nào liệt kê mà không bị RỖNG không nhỉ?
Mình chân thành cảm ơn.
Tại ô C2 kéo xuống
=IF(ROW(A2)<11,REPT(ROW(A2)-1,LEN($A$2)-LEN(SUBSTITUTE($A$2,ROW(A2)-1,""))),"")
 
Mình cảm ơn bạn. Chắc do mình diễn đạt chưa tốt.
Mình muốn kết quả như thế này? Mình dùng công thức hiện tại thì bị trống dữ liệu.

View attachment 234747
Mã:
=IFERROR(REPT(""&SMALL(IFERROR(MATCH("*"&{1,2,3,4,5,6,7,8,9}&"*",$A$2,0)*{1,2,3,4,5,6,7,8,9},""),ROW(A1)),LEN($A$2)-LEN(SUBSTITUTE($A$2,""&SMALL(IFERROR(MATCH("*"&{1,2,3,4,5,6,7,8,9}&"*",$A$2,0)*{1,2,3,4,5,6,7,8,9},""),ROW(A1)),""))),"")
Ctrl+Shift+Enter
 
Mã:
=IFERROR(REPT(""&SMALL(IFERROR(MATCH("*"&{1,2,3,4,5,6,7,8,9}&"*",$A$2,0)*{1,2,3,4,5,6,7,8,9},""),ROW(A1)),LEN($A$2)-LEN(SUBSTITUTE($A$2,""&SMALL(IFERROR(MATCH("*"&{1,2,3,4,5,6,7,8,9}&"*",$A$2,0)*{1,2,3,4,5,6,7,8,9},""),ROW(A1)),""))),"")
Ctrl+Shift+Enter
Em cũng ham vui :p
=IFERROR(MOD(AGGREGATE(15,6,REPT({1,2,3,4,5,6,7,8,9},LEN($A$1)-LEN(SUBSTITUTE($A$1,{1,2,3,4,5,6,7,8,9},"")))+{1,2,3,4,5,6,7,8,9}*10^12,ROW(A1)),10^12),"")
 
Mã:
=IFERROR(REPT(""&SMALL(IFERROR(MATCH("*"&{1,2,3,4,5,6,7,8,9}&"*",$A$2,0)*{1,2,3,4,5,6,7,8,9},""),ROW(A1)),LEN($A$2)-LEN(SUBSTITUTE($A$2,""&SMALL(IFERROR(MATCH("*"&{1,2,3,4,5,6,7,8,9}&"*",$A$2,0)*{1,2,3,4,5,6,7,8,9},""),ROW(A1)),""))),"")
Ctrl+Shift+Enter
Nó chĩ đơn giản vậy thôi. làm chi mà dài để gây khó cho người hỏi vậy
=IF(B2="","",REPT(B2,LEN($A$2)-LEN(SUBSTITUTE($A$2,B2,""))))
Bài đã được tự động gộp:

Em cũng ham vui :p
=IFERROR(MOD(AGGREGATE(15,6,REPT({1,2,3,4,5,6,7,8,9},LEN($A$1)-LEN(SUBSTITUTE($A$1,{1,2,3,4,5,6,7,8,9},"")))+{1,2,3,4,5,6,7,8,9}*10^12,ROW(A1)),10^12),"")
Nó chĩ đơn giản vậy thôi. làm chi mà dài để gây khó cho người hỏi vậy
=IF(B2="","",REPT(B2,LEN($A$2)-LEN(SUBSTITUTE($A$2,B2,""))))
 
Nó chĩ đơn giản vậy thôi. làm chi mà dài để gây khó cho người hỏi vậy
=IF(B2="","",REPT(B2,LEN($A$2)-LEN(SUBSTITUTE($A$2,B2,""))))
Bài đã được tự động gộp:


Nó chĩ đơn giản vậy thôi. làm chi mà dài để gây khó cho người hỏi vậy
=IF(B2="","",REPT(B2,LEN($A$2)-LEN(SUBSTITUTE($A$2,B2,""))))
Cột B trống trơn mờ, bài #9
 
Em cảm ơn bạn @HieuCD và @ dazkangel
Thuật toán rất hay ạ.
Mục đích chủ yếu của em là muốn học về thuật xử lý ạ. Đúng là 2 công thức em cần.
Còn thực tế nếu vấp phải tình huống này em sẽ chọn cách của bạn @minhtuan55 ạ vì người làm không phải ai cũng hiểu được thuật toán của 2 công thức kia nhưng em nghĩ nếu mình là người học nên học những cái khó.
Em cảm ơn mọi người rất nhiều ạ.
 
nhưng em nghĩ nếu mình là người học nên học những cái khó.
Vậy góp thêm cho bạn thêm 1 công thức nữa cho đủ bộ "tam sên". :)
Mã:
=IFERROR(INDEX(REPT(ROW($1:$10)-1,FREQUENCY(--MID($A$2,ROW(INDIRECT("1:"&LEN($A$2))),1),ROW($1:$10)-1)),AGGREGATE(15,6,ROW($1:$10)/(FIND(ROW($1:$10)-1,$A$2)>0),ROWS($1:1))),"")
Chỉ Enter, fill xuống.

Thân
 

File đính kèm

  • Tachso.xlsb
    11.8 KB · Đọc: 9
Vậy góp thêm cho bạn thêm 1 công thức nữa cho đủ bộ "tam sên". :)
Mã:
=IFERROR(INDEX(REPT(ROW($1:$10)-1,FREQUENCY(--MID($A$2,ROW(INDIRECT("1:"&LEN($A$2))),1),ROW($1:$10)-1)),AGGREGATE(15,6,ROW($1:$10)/(FIND(ROW($1:$10)-1,$A$2)>0),ROWS($1:1))),"")
Chỉ Enter, fill xuống.

Thân
vẫn chưa được
1586064529971.png
 
Dễ ờm mà!
Mã:
=IFERROR(INDEX(REPT(ROW($1:$10)-1,FREQUENCY(IFERROR(--MID($A$2,ROW(INDIRECT("1:"&LEN($A$2))),1),""),ROW($1:$10)-1)),AGGREGATE(15,6,ROW($1:$10)/(FIND(ROW($1:$10)-1,$A$2)>0),ROWS($1:1))),"")
Kết thúc bằng Ctrl+Shift+Enter.
Nếu bạn muốn nhào vô, hỏi lắt léo để học ké, thì tôi cũng không tiếc chi dạy cho bạn thêm 1 công thức nữa:
Mã:
=IFERROR(INDEX(REPT(ROW($1:$10)-1,LEN($A$2)-LEN(SUBSTITUTE($A$2,ROW($1:$10)-1,""))),AGGREGATE(15,6,ROW($1:$10)/(FIND(ROW($1:$10)-1,$A$2)>0),ROWS($1:1))),"")
Chỉ Enter, fill xuống.

Thân
 

File đính kèm

  • Tachso.xlsb
    12.9 KB · Đọc: 9
Dễ ờm mà!
Mã:
=IFERROR(INDEX(REPT(ROW($1:$10)-1,FREQUENCY(IFERROR(--MID($A$2,ROW(INDIRECT("1:"&LEN($A$2))),1),""),ROW($1:$10)-1)),AGGREGATE(15,6,ROW($1:$10)/(FIND(ROW($1:$10)-1,$A$2)>0),ROWS($1:1))),"")
Kết thúc bằng Ctrl+Shift+Enter.
Nếu bạn muốn nhào vô, hỏi lắt léo để học ké, thì tôi cũng không tiếc chi dạy cho bạn thêm 1 công thức nữa:
Mã:
=IFERROR(INDEX(REPT(ROW($1:$10)-1,LEN($A$2)-LEN(SUBSTITUTE($A$2,ROW($1:$10)-1,""))),AGGREGATE(15,6,ROW($1:$10)/(FIND(ROW($1:$10)-1,$A$2)>0),ROWS($1:1))),"")
Chỉ Enter, fill xuống.

Thân
Đừng vội vàng .vẫn chưa chuẩn nha anh

1586066856083.png

ô A3 có 9 ký tự số 3, mà sao cột F lại ra 15 ký tự A
1586067769720.png
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom