Lọc chuỗi (1 người xem)

Người dùng đang xem chủ đề này

taytay20

Thành viên mới
Tham gia
14/3/13
Bài viết
39
Được thích
0
Mình có 1 chuỗi các ký tự như :


SDDF-123334-DSFF-DSFD23DF-H45
WEWE-2342434-VDFF-FDSF
FDFDF-FSDFS-3435-FDGFDGF-K89
EREWR-RER45-343434-DFFE-H50
DSDFS-DSFF-39400-FHJDIOE
FDD-3323V-32456-FRDFRER4
Mình muốn lấy dãy ký tự thứ 4 nguyên dãy.Nhưng đang phân vân dùng hàm find và mid dựa vào dấu "-" thứ 3 để lấy .Nhưng khó ở chỗ có chuỗi thì có dấu "-" phía sau ,nhưng có chuỗi thì lại không. Các bạn Pro Excel giúp mình với !!!! Cảm ơn các bạn rất nhiều.
 

File đính kèm

Lần chỉnh sửa cuối:
Ô H8=TRIM(RIGHT(LEFT(SUBSTITUTE(F8,"-",REPT(" ",LEN(F8))),4*LEN(F8)),LEN(F8))
Em mạo muội thử làm.Hi
 
Mình có 1 chuỗi các ký tự như :


SDDF-123334-DSFF-DSFD23DF-H45
WEWE-2342434-VDFF-FDSF
FDFDF-FSDFS-3435-FDGFDGF-K89
EREWR-RER45-343434-DFFE-H50
DSDFS-DSFF-39400-FHJDIOE
FDD-3323V-32456-FRDFRER4
Mình muốn lấy dãy ký tự thứ 4 nguyên dãy.Nhưng đang phân vân dùng hàm find và mid dựa vào dấu "-" thứ 3 để lấy .Nhưng khó ở chỗ có chuỗi thì có dấu "-" phía sau ,nhưng có chuỗi thì lại không. Các bạn Pro Excel giúp mình với !!!! Cảm ơn các bạn rất nhiều.

Bạn dùng công thức sau cho ô B8:

=TRIM(MID(SUBSTITUTE(A8,"-",REPT(" ",255)),255*3,255))
 
Bạn có thể giải thích rõ hơn một chút nữa được không về công thức. Vì saophải thay thế 255, và 255*3 ??? Mình chưa hiểu lắm

Về con số 3 thì bạn hiểu thôi vì bạn đang xét "chuỗi sau ký tự phân cách thứ 3". Ký tự phân cách thì tùy mỗi người. Bạn có SDDF-123334-DSFF-DSFD23DF-H45 với dấu phân cách là "-". Tôi có FB140x10x250 với dấu phân cách là "x"


Về 255 không nhất thiết phải là thế.

Bạn đọc bài #6 trong chủ đề sau nhé. Ở bài đó là lấy "chuỗi sau ký tự phân cách thứ 1", còn bạn cần lấy "chuỗi sau ký tự phân cách thứ 3", vì thế 255*3, nhưng triết lý như nhau.
Bạn có thể tự thêm bằng tay những 255 ký tự " " và đếm bằng tay thì bạn sẽ thấy là MID(SUBSTITUTE(A8,"-",REPT(" ",255)),255*3,255) trả về chuỗi có dạng một loạt dấu cách " "abc...xyzmột loạt dấu cách " ", trong đó abc...xyz là chuỗi bạn cần có. Do vậy TRIM(MID(SUBSTITUTE(A8,"-",REPT(" ",255)),255*3,255)) sẽ trả về abc...xyz là chuỗi bạn cần.
Nhưng bạn cũng có thể xét về mặt Toán học như tôi. Dễ dàng chỉ ra vị trí của "a" và "z" trong chuổi SUBSTITUTE(A8,"-",REPT(" ",255)).


http://www.giaiphapexcel.com/forum/showthread.php?80671-Hỏi-về-hàm-lấy-kí-tự-trong-xâu-!!!
 
ọc

Về con số 3 thì bạn hiểu thôi vì bạn đang xét "chuỗi sau ký tự phân cách thứ 3". Ký tự phân cách thì tùy mỗi người. Bạn có SDDF-123334-DSFF-DSFD23DF-H45 với dấu phân cách là "-". Tôi có FB140x10x250 với dấu phân cách là "x"


Về 255 không nhất thiết phải là thế.

Bạn đọc bài #6 trong chủ đề sau nhé. Ở bài đó là lấy "chuỗi sau ký tự phân cách thứ 1", còn bạn cần lấy "chuỗi sau ký tự phân cách thứ 3", vì thế 255*3, nhưng triết lý như nhau.
Bạn có thể tự thêm bằng tay những 255 ký tự " " và đếm bằng tay thì bạn sẽ thấy là MID(SUBSTITUTE(A8,"-",REPT(" ",255)),255*3,255) trả về chuỗi có dạng một loạt dấu cách " "abc...xyzmột loạt dấu cách " ", trong đó abc...xyz là chuỗi bạn cần có. Do vậy TRIM(MID(SUBSTITUTE(A8,"-",REPT(" ",255)),255*3,255)) sẽ trả về abc...xyz là chuỗi bạn cần.
Nhưng bạn cũng có thể xét về mặt Toán học như tôi. Dễ dàng chỉ ra vị trí của "a" và "z" trong chuổi SUBSTITUTE(A8,"-",REPT(" ",255)).


http://www.giaiphapexcel.com/forum/showthread.php?80671-Hỏi-về-hàm-lấy-kí-tự-trong-xâu-!!!



+-+-+-++-+-+-++-+-+-++-+-+-++-+-+-+-+*/-+*/-+*/-+*/-+*/-+*/
Thanks you bạn không hiểu nhưng để suy nghĩ thêm,.....-+*/-+*/-+*/
 
Đây là kỹ thuật dổ tràn nước để đẩy rác đi. Bạn nhét thật nhiều ký tự gì đó vào trước đoạn chuỗi cần tìm. Sau đó cắt bỏ một đoạn dài bằng số ký tự vừa nhét vào thì sẽ loại bỏ được những ký tự đã từng đứng trước đoạn cần tìm. Để loại bỏ phần sau đoạn cần tìm cũng tương tự như vậy.

Mã:
SDDF-123334-DSFF-DSFD23DF-H45


Đổi tất cả "-" thành 255_dấu_trống thì được:


SDDF & {255_dấu_trống} & 123334 & {255_dấu_trống} & DSFF & {255_dấu_trống} & DSFD23DF & {255_dấu_trống} & H45
                                                             ^                                ^
Kể từ vị trí thứ 255x3=765 ; tức là khoảng ở đâu đây --------| đếm 255 ký tự, tức là ở đây ---|


Cắt lấy phần đó, Trim (tức là bỏ hết những ký tự trông ở đầu và đuôi, còn lại: DSFD23DF


Tại sao 255*3? Vì ta nhét tất cả 3 lần 255_dấu_trống vào trước đoạn cần tìm.
Như vậy, trước đoạn cần tìm sẽ có tất cả 765+n ký tự. Và sau đoạn cần tìm sẽ có 255+m ký tự
Cho nên cứ đếm khoảng 765 ký tự thì coi như gần đến đoạn cần tìm.
Kể từ đó đếm 255 ký tự thì sẽ gồm được đoạn cần tìm và cắt bỏ phần đuôi.
 
Mình đã thử làm theo công thức của bạn nhưng không ra kết quả như mong đợi +-+-+-++-+-+-++-+-+-++-+-+-+
 

Bài viết mới nhất

Back
Top Bottom