Tìm nhiều vị trí xuất hiện của ký tự trong chuỗi

Liên hệ QC

chudaosi

Thành viên mới
Tham gia
27/1/10
Bài viết
14
Được thích
0
Các anh chị cho em hòi 1 vấn đề nhỏ. Em có các string tương tự như ví dụ sau : "958860-62,958960-64" nhưng độ dài không cố định. Em muốn tìm vị trí của các ký tự "-" để làm phép trừ giữa các số thì làm thế nào? Hàm Find() chỉ tìm thấy ký tự "-" đầu tiên, em không biết cách nào để tìm ký tự "-" thừ 2 nằm ở vị trí nào. Mong các anh chị giúp em. (Không dùng VBA có được không?)
 
Các anh chị cho em hòi 1 vấn đề nhỏ. Em có các string tương tự như ví dụ sau : "958860-62,958960-64" nhưng độ dài không cố định. Em muốn tìm vị trí của các ký tự "-" để làm phép trừ giữa các số thì làm thế nào? Hàm Find() chỉ tìm thấy ký tự "-" đầu tiên, em không biết cách nào để tìm ký tự "-" thừ 2 nằm ở vị trí nào. Mong các anh chị giúp em. (Không dùng VBA có được không?)
Nếu ô A1 chứa chuỗi:
Mã:
=FIND("-",A1,FIND("-",A1,1)+1)
 
Các anh chị cho em hòi 1 vấn đề nhỏ. Em có các string tương tự như ví dụ sau : "958860-62,958960-64" nhưng độ dài không cố định. Em muốn tìm vị trí của các ký tự "-" để làm phép trừ giữa các số thì làm thế nào? Hàm Find() chỉ tìm thấy ký tự "-" đầu tiên, em không biết cách nào để tìm ký tự "-" thừ 2 nằm ở vị trí nào. Mong các anh chị giúp em. (Không dùng VBA có được không?)
Công thức mảng này sẽ trả về vị trí ký tự "-" thứ n trong chuỗi
Mã:
 =SMALL(IF(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)="-",ROW(INDIRECT("1:"&LEN(A1))),""),[COLOR=red]n[/COLOR])
 
Các anh chị cho em hòi 1 vấn đề nhỏ. Em có các string tương tự như ví dụ sau : "958860-62,958960-64" nhưng độ dài không cố định. Em muốn tìm vị trí của các ký tự "-" để làm phép trừ giữa các số thì làm thế nào? Hàm Find() chỉ tìm thấy ký tự "-" đầu tiên, em không biết cách nào để tìm ký tự "-" thừ 2 nằm ở vị trí nào. Mong các anh chị giúp em. (Không dùng VBA có được không?)
Hổng biết tìm xong rồi làm cái gì tiếp đây? Sao không nói luôn?
Chứ chẳng lẽ tìm để... ngó chơi
 
Hổng biết tìm xong rồi làm cái gì tiếp đây? Sao không nói luôn?
Chứ chẳng lẽ tìm để... ngó chơi
Sau khi tìm được vị trí của các dấu "-", em muốn lấy 2 số gồm 2 chữ số liền trước dấu "-" trừ nhau để ra kết quả thì làm như thế nào vậy anh? Ví dụ như chuỗi: "88850-52,89580-84" thì em sẽ lấy 52-50+84-80 = 6.
 
Sau khi tìm được vị trí của các dấu "-", em muốn lấy 2 số gồm 2 chữ số liền trước dấu "-" trừ nhau để ra kết quả thì làm như thế nào vậy anh? Ví dụ như chuỗi: "88850-52,89580-84" thì em sẽ lấy 52-50+84-80 = 6.
Bạn muốn làm bài này bằng công thức hay lập trình VBA
Và đằng nào thì bạn cũng nên đưa file có dữ liêu lên đây (mất công nói 1 đàng nhưng dữ liệu thật lại khác...)
 
Bạn muốn làm bài này bằng công thức hay lập trình VBA
Và đằng nào thì bạn cũng nên đưa file có dữ liêu lên đây (mất công nói 1 đàng nhưng dữ liệu thật lại khác...)
Em muốn làm bằng công thức vì file này em phải gửi đi, nếu sử dụng VBA thì người ta phải enable macro. Trong file em kèm theo có column C em đang phải tính thủ công, mặc dù nhanh nhưng em đang học Excel để tự động công việc 1 chút.
 

File đính kèm

  • Vi du.xls
    31.5 KB · Đọc: 136
Em muốn làm bằng công thức vì file này em phải gửi đi, nếu sử dụng VBA thì người ta phải enable macro. Trong file em kèm theo có column C em đang phải tính thủ công, mặc dù nhanh nhưng em đang học Excel để tự động công việc 1 chút.
Trời ơi, lỡ mà gặp chuổi vầy:
829700-03, 846828, 829710-13, 829720-23, 829730-33, 829740-43
Chắc công thức "đói" luôn quá
 
Mình dùng công thức phụ như sau :
=FIND("+",SUBSTITUTE(J2,"-","+",n),1)
Hàm Subsititute sẽ thay thế ký tự "+" cho vị trí thứ n của dấu "-".
Mình dùng hàm find để tìm vị trí thứ n của "-"
Chú ý : Trong chuỗi phải lưu ý không có ký tự "+" nhé :)
 

File đính kèm

  • Test.xlsx
    9 KB · Đọc: 187
Cũng trường hợp có n ký tự giống nhau:
Có text như sau : "Dây dù D500/250/52 dăng mùng", "Dây dù D20/250/52 dăng mùng". trong chuỗi có n chữ d. Mình muốn

Thứ nhất : tìm vị trí chữ D mà phía sau nó là số (ở đây là D5, D2), không phải D phía sau là text "Dây, dù, dăng";
Thứ 2 là lấy toàn bộ số nằm sau chữ D và dấu /: ở đây là số 500 liền sau chữ D mà không phải lấy toàn bộ số phía sau chữ D (500/250/52);
thứ 3: và sau đó lấy toàn bộ số sau chữ D (500/250/52)

Cảm ơn
 
Cũng trường hợp có n ký tự giống nhau:
Có text như sau : "Dây dù D500/250/52 dăng mùng", "Dây dù D20/250/52 dăng mùng". trong chuỗi có n chữ d. Mình muốn

Thứ nhất : tìm vị trí chữ D mà phía sau nó là số (ở đây là D5, D2), không phải D phía sau là text "Dây, dù, dăng";
Thứ 2 là lấy toàn bộ số nằm sau chữ D và dấu /: ở đây là số 500 liền sau chữ D mà không phải lấy toàn bộ số phía sau chữ D (500/250/52);
thứ 3: và sau đó lấy toàn bộ số sau chữ D (500/250/52)

Cảm ơn
Xem file thử nha!
 

File đính kèm

  • Book2.xlsx
    9.6 KB · Đọc: 58

Cảm ơn bạn: nhưn đầu bài mình hơi khác 1 tí do mình giải thich chưa kỹ.

Cũng trường hợp có n ký tự giống nhau:
Có text như sau : "Dây dù D500/250/52 dăng mùng", "Dây xích D20/250/52 dăng mùng". trong chuỗi có n chữ d. Mình muốn

Thứ nhất : tìm vị trí chữ D mà phía sau nó là số (ở đây là D5, D2), không phải D phía sau là text "Dây, dù, dăng";
Lưu ý : cấu trúc dây dù và dăng mùng không cố định. mình ví dụ để có nhiều chữ D, nhưng mình tìm chữ D mà phía sau là số, còn những chữ D kia phải sau nó là chũ không tính. Ví dụ Dây dù D500/250/52 dăng mùng, Dây xích D500mm, keo dán ống D2500 mm...., mình muốn trích kích thước liền kề sau chữ D và các kích thước còn lại.

Bạn giúp thêm chỗ này với. Xin cảm ơn.
 
Cảm ơn bạn: nhưn đầu bài mình hơi khác 1 tí do mình giải thich chưa kỹ.

Cũng trường hợp có n ký tự giống nhau:
Có text như sau : "Dây dù D500/250/52 dăng mùng", "Dây xích D20/250/52 dăng mùng". trong chuỗi có n chữ d. Mình muốn

Thứ nhất : tìm vị trí chữ D mà phía sau nó là số (ở đây là D5, D2), không phải D phía sau là text "Dây, dù, dăng";
Lưu ý : cấu trúc dây dù và dăng mùng không cố định. mình ví dụ để có nhiều chữ D, nhưng mình tìm chữ D mà phía sau là số, còn những chữ D kia phải sau nó là chũ không tính. Ví dụ Dây dù D500/250/52 dăng mùng, Dây xích D500mm, keo dán ống D2500 mm...., mình muốn trích kích thước liền kề sau chữ D và các kích thước còn lại.

Bạn giúp thêm chỗ này với. Xin cảm ơn.
1. Vị trí chữ D có số liền kề:
PHP:
=LOOKUP(10^4,FIND("D"&ROW($1:$10)-1,A2))
2. Lấy D và số đầu tiên trong dãy:
PHP:
=MID(LEFT(A2,FIND("/",A2)-1),LOOKUP(10^4,FIND("D"&ROW($1:$10)-1,A2))+1,10)
3. Lấy D và cả dãy:
PHP:
=TRIM(MID(SUBSTITUTE(A2," ",REPT(" ",100)),LOOKUP(10^4,FIND("D"&ROW($1:$10)-1,SUBSTITUTE(A2," ",REPT(" ",100))))+1,100))
Tất cả chỉ Enter fill xuống.

Chúc bạn ngày vui.
 

File đính kèm

  • GPE.xlsx
    9.8 KB · Đọc: 63
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom