Tách chuỗi ký tự nằm giữa hai ký tự đặc biệt

Liên hệ QC

KhoiSMC

Thành viên thường trực
Tham gia
19/6/09
Bài viết
246
Được thích
32
Thưa các bạn,

Mình đã tách được một chuỗi ký bất kỳ nằm giữa dấu "-" theo công thức sau: (chuỗi này lọc từ một đoạn text trong ô A1)
Mã:
=LEFT(TRIM(MID(A1,FIND("-",A1)+1,LEN(A1))),FIND("-",TRIM(MID(A1,FIND("-",A1)+1,LEN(A1))))-1)

Mình đang phát triển thêm công thức trên để lọc ra được nhiều chuỗi ký tự được định nghĩa bởi giữa hai ký tự đặc biệt khác, ví dụ như sau:

Tại ô A1 có đoạn text: " aa- nội dung của aa xxx - bb- nội dung của bb xxx - cc- nội dung của cc xxx -"

Giải thích:
- Cặp hai ký tự đặc biệt trong đoạn text trên là bắt đầu là "aa-" và kết thúc là "-"
tương tự hai ký tự đặc biệt khác bắt đầu là "bb-" và kết thúc là "-"
.... bắt đầu là "cc-" và kết thúc là "-"

Kết quả:
Tại ô B1 lọc ra chuỗi ký tự nằm giữa cặp "aa-" và "-": kết quả tại B1 là: "nội dung của aa xxx"
Tại ô C1 lọc ra chuỗi ký tự nằm giữa cặp "bb-" và "-": kết quả tại B1 là: "nội dung của bb xxx"
Tại ô D1 lọc ra chuỗi ký tự nằm giữa cặp "cc-" và "-": kết quả tại B1 là: "nội dung của cc xxx"

Nhờ các bạn góp ý thêm để mở rộng kết quả bài toán.

Thanks
Khoi
 
Lần chỉnh sửa cuối:
Thưa các bạn,
Mình đã tách được một chuỗi ký bất kỳ nằm giữa dấu "-" theo công thức sau: (chuỗi này lọc từ một đoạn text trong ô A1)
Mã:
=LEFT(TRIM(MID(A1,FIND("-",A1)+1,LEN(A1))),FIND("-",TRIM(MID(A1,FIND("-",A1)+1,LEN(A1))))-1)
Thanks
Khoi
Công thức tại B1, bạn kéo sang phải:
Mã:
=TRIM(MID(SUBSTITUTE($A1,"-",REPT(" ",255)),255*COLUMN(A$1)-254,255))
Phát triển thêm nếu bạn muốn tách ký tự đặc biệt khác.
 
Thanks bạn, nó đã hoạt động như kết quả dưới đây.

Mình đang tìm cách kết quả không phụ thuộc vào cột phụ trợ như B, D, F nữa.

Thanks
Khoi
 

File đính kèm

  • Untitled.jpg
    Untitled.jpg
    17.4 KB · Đọc: 65
  • test.xlsx
    9.1 KB · Đọc: 206
Lần chỉnh sửa cuối:
Thanks bạn, nó đã hoạt động như kết quả dưới đây.

Mình đang tìm cách kết quả không phụ thuộc vào cột phụ trợ như B, D, F nữa.

Thanks
Khoi

Đưa file lên từ đầu là xong chuyện rồi. Dùng cái này tại B1:
Mã:
=TRIM(MID(SUBSTITUTE($A1,"-",REPT(" ",255)),255*(2*COLUMNS($A:A)-1),255))
Kéo fill sang phải và xuống dưới
 
Em cám ơn thầy nhiều ạ, em đã hiểu rồi, thanks thầy

Khoi
 
Thưa thầy,

Em muốn mở rộng thêm một chút như sau nhờ thầy giúp đỡ:
- Để mở cho người sử dụng có thể chọn "ký tự bắt đầu" nhập vào tại ô B2
- Công thức căn cứ trên từ khóa tại ô B2 để lọc ra đoạn text nằm giữa từ khóa ô B2 và kết thúc bởi "-".

Ví dụ:
- Khi chọn " ký tự bắt đầu" tại ô B2 là: "aa-" thì kết quả như sau:
th1.png

- Khi chọn " ký tự bắt đầu" tại ô B2 là: "cc-" hoặc là "bb-" thì kết quả như sau:
th2.png
hoặc:
th3.png

Xin thầy hướng dẫn giúp em với ạ?

em cảm ơn thầy,
Khoii
 

File đính kèm

  • test.xlsx
    11.4 KB · Đọc: 64
Lần chỉnh sửa cuối:
Công thức thầy hướng dẫn tại bài #4 em đã áp dụng rồi và đúng với yêu cầu tại bài #1 trên
Tuy nhiên khi áp dụng vào dữ liệu thật em đang xử lý thì lại tồn tại nhiều "từ khóa bắt đầu" quá nên sẽ phát sinh nhiều cột mới tìm được thông tin cần thiết.
Do vậy, em muốn để từ khóa bắt đầu là tùy biến tùy theo nhu cầu tìm kiếm của nguời sử dụng như em mô tả tại bài #6.

Nhờ thầy tiếp tục hướng dẫn em với ạ,

Em cám ơn,
Khoi
 
Lần chỉnh sửa cuối:
Cho ví dụ cụ thể đi bạn
 
- Để mở cho người sử dụng có thể chọn "ký tự bắt đầu" nhập vào tại ô B2
- Công thức căn cứ trên từ khóa tại ô B2 để lọc ra đoạn text nằm giữa từ khóa ô B2 và kết thúc bởi "-".

Khoii
Với yêu cầu này (có từ bắt đầu và có từ kết thúc) thì dùng MID và FIND,ví dụ C2 là từ kết thúc, công thức:
Mã:
=TRIM(MID(A5,FIND($B$2,A5)+LEN($B$2),FIND($C$2,$A$5,FIND($B$2,A5)+LEN($B$2)+1)-FIND($B$2,A5)-LEN($B$2)-1))
 

File đính kèm

  • test(2).xlsx
    11.5 KB · Đọc: 115
cám ơn bạn Bum nhé

Khoi
 
cám ơn bạn Bum nhé

Khoi

Bạn sửa dùm tôi công thức trên, bỏ -1 ở cuối công thức vì đã trừ độ dài của B2 rồi.
Tham khảo thêm công thức trích chuỗi với MID và SUBSTITUTE:
Mã:
=TRIM(MID(SUBSTITUTE(SUBSTITUTE(A5,$B$2,REPT(" ",255)),$C$2,REPT(" ",255)),255,255))
 

File đính kèm

  • test(2).xlsx
    11.5 KB · Đọc: 37
Góp vui 1 công thức cho ô B5
PHP:
=IF(COUNTIF(A5;"*"&$B$2&"*");TRIM(LEFT(SUBSTITUTE(REPLACE($A5;1;FIND($B$2;$A5)+LEN($B$2);"");"-";REPT(" ";200));200));"TeoTeo")
 

File đính kèm

  • testteo.rar
    8.2 KB · Đọc: 55
Thưa các anh chị. Các anh chị có thể giúp em hoàn thiện công thức tách nhiều chuỗi tại file đính kèm được ko ạ? Em cảm ơn rất nhiều!
 

File đính kèm

  • tachchuoiphuctap.xlsx
    11 KB · Đọc: 39

File đính kèm

  • tachchuoiphuctap.rar
    9 KB · Đọc: 102
Lần chỉnh sửa cuối:
Mọi người có cách tách được k ạ
 
Lần chỉnh sửa cuối:
Mọi người ơi có thể giúp mình được không,
Ví dụ mình muốn tách "10x5+3" từ chuỗi ký tự "Cột B, D: 10x5+3=53" thành "10x5+3"
Ví dụ "10x5+3=53" ở A1, tại B1=left(A1,find("=",A1)-1). Mình chưa test nha, nhìn hình viết công thức thôi :)
 
Cảm ơn anh Lê Hồng Minh83 đã trả lời câu hỏi của em: VD ở ô A1 là "10x5+3=53",
 
Lần chỉnh sửa cuối:
Mọi người ơi có thể giúp mình được không,
Ví dụ mình muốn tách "10x5+3" từ chuỗi ký tự "Cột B, D: 10x5+3=53" thành "10x5+3"
Giả sử chuỗi cần tách có trong Cell B1.
Vậy bạn thử với:
PHP:
Sub abc()
   Dim St
      St = [b1]
      [c1] = Split(Split(St, ":")(1), "=")(0)
     MsgBox Split(Split(St, ":")(1), "=")(0)
End Sub
 
Giả sử chuỗi cần tách có trong Cell B1.
Vậy bạn thử với:
PHP:
Sub abc()
   Dim St
      St = [b1]
      [c1] = Split(Split(St, ":")(1), "=")(0)
     MsgBox Split(Split(St, ":")(1), "=")(0)
End Sub
A ơi a có thể nói chi tiết giúp em xem đoạn code trên ap dụng như thế nào vào exel được k ạ em cảm ơn a
 
Web KT
Back
Top Bottom