Cần giúp: Xác định vị trí của ký tự tùy chọn trong chuỗi

xuongrongdat

Có bao giờ bạn tự hỏi "Tôi là ai?"
Tham gia ngày
30 Tháng sáu 2008
Bài viết
912
Được thích
764
Điểm
860
Nơi ở
Mỹ Tho- Tiền Giang
Nhờ mọi người giúp mình nhu cầu này với.
Ví dụ mình có chuỗi ký tự "Starring". Mình muốn viết hàm để xác định 2 việc:
1. Chữ "r" cuối cùng của chuỗi đứng vị trí thứ mấy? => 5.
2. Các chữ "r" trong chuỗi đứng ở những vị trí thứ mấy? => 4 5.

Mọi người xem file đính kèm ạ.

Xin cảm ơn.
 

File đính kèm

huuthang_bd

Chuyên gia GPE
Tham gia ngày
10 Tháng chín 2008
Bài viết
7,965
Được thích
9,308
Điểm
860
Nơi ở
TP.HCM
Công thức mảng
Mã:
B2=IFERROR(LEN(A2)-LEN(VLOOKUP("r*",RIGHT(A2,ROW(INDIRECT("1:"&LEN(A2)))),1,))+1,)
Công thức thường
Mã:
C11=IFERROR(FIND("|",SUBSTITUTE($A11,"r","|",COLUMN(A1))),"")
 

n0thing1988

Mù VBA
Tham gia ngày
30 Tháng chín 2013
Bài viết
1,569
Được thích
1,148
Điểm
560
Câu 2 C11=FIND("zzz",SUBSTITUTE($A11,"r","zzz",COLUMN()-2))
 
Lần chỉnh sửa cuối:

hongphuong1997

Thành viên tiêu biểu
Tham gia ngày
12 Tháng mười một 2017
Bài viết
498
Được thích
154
Điểm
195
Công thức mảng
Mã:
B2=IFERROR(LEN(A2)-LEN(VLOOKUP("r*",RIGHT(A2,ROW(INDIRECT("1:"&LEN(A2)))),1,))+1,)
Công thức thường
Mã:
C11=IFERROR(FIND("|",SUBSTITUTE($A11,"r","|",COLUMN(A1))),"")
Anh oi sai rùi nhé (Mặc dù công thức rất đúng, nhưng không phải chủ đề)
1603451296553.png
 

hongphuong1997

Thành viên tiêu biểu
Tham gia ngày
12 Tháng mười một 2017
Bài viết
498
Được thích
154
Điểm
195
Lần chỉnh sửa cuối:

phuongvq123

Thành viên thường trực
Tham gia ngày
15 Tháng tư 2020
Bài viết
290
Được thích
179
Điểm
45
Tuổi
25
Nhờ mọi người giúp mình nhu cầu này với.
Ví dụ mình có chuỗi ký tự "Starring". Mình muốn viết hàm để xác định 2 việc:
1. Chữ "r" cuối cùng của chuỗi đứng vị trí thứ mấy? => 5.
2. Các chữ "r" trong chuỗi đứng ở những vị trí thứ mấy? => 4 5.

Mọi người xem file đính kèm ạ.

Xin cảm ơn.
Tuy công thức hơi dài nhưng bạn tham khảo
Mã:
=MAX(IFERROR(SEARCH("r";A2;ROW(A1:INDIRECT("A"&LEN(A2))));0))
 

batman1

Thành viên gạo cội
Tham gia ngày
8 Tháng chín 2014
Bài viết
3,675
Được thích
5,676
Điểm
560
Toàn bộ bảng chữ cái nào có 32 ký tự, bạn có thể cho biết được không? Nếu không có gì bất tiện, bạn gõ luôn ra đây được không?
Cần phân biệt.
1. Bảng chữ cái của tiếng Việt có 29 chữ cái: a, ă, â, b, c, d, đ, e, ê, g, h, i, k, l, m, n, o, ô, ơ, p, q, r, s, t, u, ư, v, x, y.

Những ai dùng f, j, w và z trong tiếng Việt là dùng sai, chả biết họ muốn chứng tỏ cái gì. Sự sành điệu, sự khác người? Dù sao trong tiếng Việt không có 4 ký tự ANSI f, j, w và z.

2. Tập chữ cái dùng trong công nghệ thông tin gồm 33 chữ cái được chỉ ra trong TCVN 6909-2001. So với bảng chữ cái tiếng Việt thì có thêm f, j, w, z.

chu cai.jpg
 

ExcelQN

Thành viên hoạt động
Tham gia ngày
7 Tháng năm 2011
Bài viết
169
Được thích
83
Điểm
380
Nhờ mọi người giúp mình nhu cầu này với.
Ví dụ mình có chuỗi ký tự "Starring". Mình muốn viết hàm để xác định 2 việc:
1. Chữ "r" cuối cùng của chuỗi đứng vị trí thứ mấy? => 5.
2. Các chữ "r" trong chuỗi đứng ở những vị trí thứ mấy? => 4 5.

Mọi người xem file đính kèm ạ.

Xin cảm ơn.
Bạn xem thử, tự làm phần còn lại.
 

File đính kèm

hongtrang26

Thành viên thường trực
Tham gia ngày
10 Tháng mười một 2011
Bài viết
319
Được thích
333
Điểm
410
Tuổi
36
Nhờ mọi người giúp mình nhu cầu này với.
Ví dụ mình có chuỗi ký tự "Starring". Mình muốn viết hàm để xác định 2 việc:
1. Chữ "r" cuối cùng của chuỗi đứng vị trí thứ mấy? => 5.
2. Các chữ "r" trong chuỗi đứng ở những vị trí thứ mấy? => 4 5.

Mọi người xem file đính kèm ạ.

Xin cảm ơn.
Nghịch tí như này
B2=LARGE(("r"=MID($A2,ROW($1:$100),1))*ROW($1:$100),COLUMN(A1)) CSE
C11=IFERROR(SMALL(IFERROR(IF("r"=MID($A11,ROW($1:$100),1),1,"")*ROW($1:$100),""),COLUMN(A$1)),"") CSE
 

File đính kèm

xuongrongdat

Có bao giờ bạn tự hỏi "Tôi là ai?"
Tham gia ngày
30 Tháng sáu 2008
Bài viết
912
Được thích
764
Điểm
860
Nơi ở
Mỹ Tho- Tiền Giang
Anh oi sai rùi nhé (Mặc dù công thức rất đúng, nhưng không phải chủ đề)

Anh @huuthang_bd oi cho em hỏi cái dấu này ( "|")

ý nghĩa là gì đó hở anh?
@hongphuong1997 : anh ấy hiểu đúng ý mình rồi đó bạn. À, mình cũng muốn hỏi ảnh cái dấu đó, hồi giờ mình xài quài mà không biết nó để làm gì! :|

Cảm ơn mọi người nhiều. Ngay bài #2 đã giải quyết được vấn đề của mình rồi. Nhưng mình sẽ từ từ xem, thử hết công thức của mọi người hỗ trợ và phản hồi lại ạ.
 
Lần chỉnh sửa cuối:

batman1

Thành viên gạo cội
Tham gia ngày
8 Tháng chín 2014
Bài viết
3,675
Được thích
5,676
Điểm
560
À, mình cũng muốn hỏi ảnh cái dấu đó, hồi giờ mình xài quài mà không biết nó để làm gì! :|
Hiểu được triết lý của công thức thì sẽ hiểu ý nghĩa của ký tự "|" thôi.
Mã:
=IFERROR(FIND("|",SUBSTITUTE($A11,"r","|",COLUMN(A1))),"")
Tại sao lại phải dùng SUBSTITUTE, sao không dùng trực tiếp FIND: =FIND("r", $A11)? Bởi FIND chỉ tìm vị trí xuất hiện đầu tiên của "r". Kết luận: chỉ dùng được FIND trong 2 trường hợp:
1. Tìm vị trí xuất hiện ĐẦU TIÊN của ký tự nào đó, nếu ký tự đó có thể xuất hiện nhiều lần trong chuỗi.
2. Tìm vị trí của ký tự nào đó khi biết chắc là ký tự đó chỉ xuất hiện nhiều nhất là 1 lần trong chuỗi.

Do trong bài toán của thớt ký tự cần tìm có thể xuất hiện nhiều lần mà thớt lại cần tìm vị trí của từng lần xuất hiện (1, 2, ...) nên không thể dùng FIND với trường hợp 1. Nếu dùng FIND với trường hợp 2 thì trước tiên phải dùng SUBSTITUTE để thay ký tự cần tìm ở các vị trí lần lượt bằng 1 ký tự nào đó, sao cho có thể chắc chắn 300% là sau khi thay thế thì ký tự thay thế đó chỉ xuất hiện 1 lần DUY NHẤT trong chuỗi để có thể dùng FIND trường hợp 1. Đó là "tính chất" của ký tự thay thế - DUY NHẤT. Với đặc thù dữ liệu của thớt thì chọn "|" là ký tự thay thế là được. Còn với các trường hợp khác, khi dữ liệu nguồn có thể có chứa ký tự "|", thậm chí cả $, %, &, ^ thì ta vẫn chọn được ký tự thay thế sao cho nó là duy nhất để có thể dùng FIND - đó là ký tự vd. "#". Nếu cả ký tự "#" và những ký tự khác cũng có thể có trong dữ liệu nguồn thì vẫn có thể dùng "||", "|||" hoặc "#$%". Hiếm có dữ liệu nguồn nào chứa những cụm ký tự như thế, đúng không? Nếu cần thì thêm vào vài ký tự quái gở nữa.
 

Nhattanktnn

Thành viên tích cực
Tham gia ngày
11 Tháng mười một 2016
Bài viết
1,071
Được thích
994
Điểm
360
@hongphuong1997 : anh ấy hiểu đúng ý mình rồi đó bạn. À, mình cũng muốn hỏi ảnh cái dấu đó, hồi giờ mình xài quài mà không biết nó để làm gì! :|

Cảm ơn mọi người nhiều. Ngay bài #2 đã giải quyết được vấn đề của mình rồi. Nhưng mình sẽ từ từ xem, thử hết công thức của mọi người hỗ trợ và phản hồi lại ạ.
Anh có lẽ nên test thử "Right"
Bài đã được tự động gộp:

Em bổ sung thêm tý cho nó hoàn thiện dựa trên công thức bác Thắng:
PHP:
=IFERROR(FIND("|",SUBSTITUTE(UPPER($A11),"R","|",COLUMN(A1))),"")
Bài đã được tự động gộp:

Để cho nó đồng bộ, B2 anh cũng có thể sử dụng công thức:
PHP:
=FIND("|",SUBSTITUTE(UPPER(A2),"R","|",LEN(A2)-LEN(SUBSTITUTE(UPPER(A2),"R",""))))
 
Lần chỉnh sửa cuối:
Top Bottom