Đếm chuỗi kí tự

  • Thread starter Thread starter baoga
  • Ngày gửi Ngày gửi
Liên hệ QC

baoga

Thành viên mới
Tham gia
9/9/09
Bài viết
18
Được thích
1
Mong được sự giúp đỡ !!!
untitled-9.jpg

Để tính số người , mình dùng hàm để đếm số dấu phẩy, nhưng vấn đề đặt ra ở đây là nếu khi nhập liệu , ng ta không tuân thủ đúng cú pháp là sau 1 ng thì có 1 dấu phẩy vè tên kết thúc thì không có dấu phẩy, lỡ ng ta nhập liệu ở tên cuối lại có dấu phẩy hoặc giữa 2 người không có dấu phẩy thì hàm của mình trở nên sai rồi
Bạn nào có cách khắc phục (đếm số tên) giúp mình với

Thanks!!!
 
Mong được sự giúp đỡ !!!
untitled-9.jpg

Để tính số người , mình dùng hàm để đếm số dấu phẩy, nhưng vấn đề đặt ra ở đây là nếu khi nhập liệu , ng ta không tuân thủ đúng cú pháp là sau 1 ng thì có 1 dấu phẩy vè tên kết thúc thì không có dấu phẩy, lỡ ng ta nhập liệu ở tên cuối lại có dấu phẩy hoặc giữa 2 người không có dấu phẩy thì hàm của mình trở nên sai rồi
Bạn nào có cách khắc phục (đếm số tên) giúp mình với

Thanks!!!


Vậy thay vì đếm dấu phẩy bạn đếm khoảng trắng đi
Nói chung chỉ là thêm 1 gợi ý chứ thật sự dù là công thức hay code gì cũng phải dựa vào đặc điểm chung của nhập liệu ---> Nếu nhập liệu lung tung thì đừng có mơ ---> Sẽ chẳng có công thức hay code nào đủ thông minh để có thể ra đáp án đúng trong mọi trường hợp đâu bạn à
 
Bạn dùng công thức này thử xem :
PHP:
=LEN(TRIM(SUBSTITUTE(A1,","," ")))-LEN(SUBSTITUTE(TRIM(SUBSTITUTE(A1,","," "))," ",""))+1
 
Mong được sự giúp đỡ !!!
untitled-9.jpg

Để tính số người , mình dùng hàm để đếm số dấu phẩy, nhưng vấn đề đặt ra ở đây là nếu khi nhập liệu , ng ta không tuân thủ đúng cú pháp là sau 1 ng thì có 1 dấu phẩy vè tên kết thúc thì không có dấu phẩy, lỡ ng ta nhập liệu ở tên cuối lại có dấu phẩy hoặc giữa 2 người không có dấu phẩy thì hàm của mình trở nên sai rồi
Bạn nào có cách khắc phục (đếm số tên) giúp mình với

Thanks!!!
Nếu người ta không tuân thủ theo cách nhập liệu thì khó giải quyết đấy nhé!
Mình chỉ khắc phục được dấu "," phía sau thôi!
Công thức là
Mã:
=IF(OR(RIGHT(A1,1)=",",MID(A1,FIND("",A1),1)=""),(LEN(A1)-LEN(SUBSTITUTE(A1,",",""))+1)-1,LEN(A1)-LEN(SUBSTITUTE(A1,",",""))+1)
Nếu nếu không được thì phải nhờ đến các cao thủ VBA thôi!
Thân chào!
 
Nếu người ta không tuân thủ theo cách nhập liệu thì khó giải quyết đấy nhé!
Mình chỉ khắc phục được dấu "," phía sau thôi!
Công thức là
Mã:
=IF(OR(RIGHT(A1,1)=",",MID(A1,FIND("",A1),1)=""),(LEN(A1)-LEN(SUBSTITUTE(A1,",",""))+1)-1,LEN(A1)-LEN(SUBSTITUTE(A1,",",""))+1)
Nếu nếu không được thì phải nhờ đến các cao thủ VBA thôi!
Thân chào!
Cách khá chuẩn là cách của Hoangdanh ấy
- Thay dấu phẩy thành khoảng trắng
- Dùng hàm TRIM để cắt bỏ những khoảng trắng thừa
- Cuối cùng đếm số khoảng trằng này, ra kết quả cộng thêm 1 là xong!
------------
Tuy nhiên, đã nói nhập liệu lung tung thì vô chừng lắm --> Ổng hứng lên không thèm chơi dấu phẩy mà gõ thành chấm phẩy cũng... tèo luôn... Hoặc ổng chẳng thèm chấm hay phẩy gì ráo, cứ viết dính liền thì ngay đến bác Bill cũng phải ngửa mặt lên mà kêu TRỜI
 
hàm của hoangdanh cũng không khác gì hàm của mình là mấy, có lẽ ndu96081631 nói đúng, nhưng mà nếu bây giờ mình giới hạn số trường hợp nhập liệu sai chỉ có:
1/ giữa tên 2 người ko có dấu phẩy (nhưng vẫn có khoảng trắng)
2/ một trong số các dấu phẩy bị thay bằng dấu chấm phẩy(";")
3/ một trog số các dấu phẩy bị thằng bằng dấu chấm (".")
Vậy có cách nào ko vậy các bạn??
Thank all !!!
 
Lần chỉnh sửa cuối:
hàm của hoangdanh cũng không khác gì hàm của mình là mấy, có lẽ ndu96081631 nói đúng, nhưng mà nếu bây giờ mình giới hạn số trường hợp nhập liệu sai chỉ có:
1/ giữa tên 2 người ko có dấu phẩy
2/ một trong số các dấu phẩy bị thay bằng dấu chấm phẩy(";")
3/ một trog số các dấu phẩy bị thằng bằng dấu chấm (".")
Vậy có cách nào ko vậy các bạn??
Thank all !!!
Thì vẫn là nguyên tắc đó:
- Thay dấu phẩy thành khoảng trắng
- Thay dấu chấm phẩy thành khoảng trắng
- thay dấu chấm thành khoảng trắng luôn
- Dùng TRIM cắt bỏ các khoảng trắng thừa
- Đếm số khoảng trằng, cộng thêm 1 là ra kết quả
------------
Tuy nhiên nếu:
1/ giữa tên 2 người ko có dấu phẩy
mà dính liền nhau thì như tôi đã nói ở trên... KÊU TRỜI
 
Bạn thử đưa ra một vài trường hợp sai để mình cố gắng chỉnh tiếp cho đúng nha.
ví dụ khi nhập vào ô A1 là "Thanh,"
kết quả cho ra là 2
hoặc cách khoảng trắng giữa hai tên, cũng không đếm được
ví dụ nhập là "Thanh Trung" kết quả cho ra là 1
Nhưng suy đi tính lại, khâu nhập liệu cũng rất quan trọng. Nếu nhập lung tung không theo quy luật nào thì đến cả Bác Bill cũng bó tay luôn.
Đúng là bó tay yêu cầu của tác giả luôn!
Thân chào và chúc sức khỏe!
 
Thì vẫn là nguyên tắc đó:
- Thay dấu phẩy thành khoảng trắng
- Thay dấu chấm phẩy thành khoảng trắng
- thay dấu chấm thành khoảng trắng luôn
- Dùng TRIM cắt bỏ các khoảng trắng thừa
- Đếm số khoảng trằng, cộng thêm 1 là ra kết quả
------------
Tuy nhiên nếu:

mà dính liền nhau thì như tôi đã nói ở trên... KÊU TRỜI

Mình đã edit lại rồi, giữa 2 tên cso khoảng trắng, ý tưởng là vậy, thay các kí tự khác thành khoảng trắng, nhưng hàm cụ thể ra sao??? bạn viết ra giùm mình được hok???
 
hàm của hoangdanh cũng không khác gì hàm của mình là mấy, có lẽ ndu96081631 nói đúng, nhưng mà nếu bây giờ mình giới hạn số trường hợp nhập liệu sai chỉ có:
1/ giữa tên 2 người ko có dấu phẩy (nhưng vẫn có khoảng trắng)
2/ một trong số các dấu phẩy bị thay bằng dấu chấm phẩy(";")
3/ một trog số các dấu phẩy bị thằng bằng dấu chấm (".")
Vậy có cách nào ko vậy các bạn??
Thank all !!!
Cũng y như công thức tên nhưng thêm vào số trường hợp.
PHP:
=LEN(TRIM(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"."," "),","," "),";"," ")))-LEN(SUBSTITUTE(TRIM(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"."," "),","," "),";"," "))," ",""))+1
VD : "mot hai. ba ,bon ; nam .;," => 5

Với VBA thì chỉ vài dòng nếu bạn đồng ý.
 
Hi Danh,

Nếu A1 không nhập gì hết thì ???

TP.


Cũng y như công thức tên nhưng thêm vào số trường hợp.
PHP:
=LEN(TRIM(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"."," "),","," "),";"," ")))-LEN(SUBSTITUTE(TRIM(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"."," "),","," "),";"," "))," ",""))+1
VD : "mot hai. ba ,bon ; nam .;," => 5

Với VBA thì chỉ vài dòng nếu bạn đồng ý.
 
Cũng y như công thức tên nhưng thêm vào số trường hợp.
PHP:
=LEN(TRIM(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"."," "),","," "),";"," ")))-LEN(SUBSTITUTE(TRIM(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"."," "),","," "),";"," "))," ",""))+1
VD : "mot hai. ba ,bon ; nam .;," => 5

Với VBA thì chỉ vài dòng nếu bạn đồng ý.

Thanks nhìu nhìu, mặc dù ko biết tí gì về VBA, nhưng vẫn xin bạn cho cái VBA của vụ này @$@!^%
 
Hi Danh,

Nếu A1 không nhập gì hết thì ???

TP.
Thì sửa lại xíu thôi anh ơi
PHP:
=LEN(TRIM(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"."," "),","," "),";"," ")))-LEN(SUBSTITUTE(TRIM(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"."," "),","," "),";"," "))," ",""))+(LEN(TRIM(A1))>0)
 
Có đấy! Đếm cái này:
A1 = thanhxt2009@yahoo.com ndu@yahoo.com
Đếm cái này xem nó ra mấy
Công thức dựa vào nguyên tắc nhập liệu thôi ---> Dử liệu khác đương nhiên không thể đúng được!

đúng rồi, nếu nhập liệu giữa 2 tên ko có kí tự gì khác thì hàm trở lên sai rồi,hichic !!!
bổ sung cái hàm ở trên của hoangdanh cho nó ngắn lại tí :
ở C2
PHP:
=IF(B2="",0,LEN(B2)-LEN(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B2,",",""),".",""),";",""))+1)
 
đúng rồi, nếu nhập liệu giữa 2 tên ko có kí tự gì khác thì hàm trở lên sai rồi,hichic !!!
bổ sung cái hàm ở trên của hoangdanh cho nó ngắn lại tí :
ở C2
PHP:
=IF(B2="",0,LEN(B2)-LEN(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B2,",",""),".",""),";",""))+1)
Công thức trên nên xem lại, như VD sau sẽ sai
VD : "mot hai. ba ,bon ; nam;" => 6

Xử lý trường hợp phức tạp mới khó chứ còn tạo ra sự phức tạp thì rất dễ. Vì thế không có cái nào là tuyệt đối 100% hết, ngay cả với VBA cũng thế. Vì vậy dữ liệu nhập vào cần phải có sự giới hạn nào đó.
 
Công thức trên nên xem lại, như VD sau sẽ sai
VD : "mot hai. ba ,bon ; nam;" => 6

Xử lý trường hợp phức tạp mới khó chứ còn tạo ra sự phức tạp thì rất dễ. Vì thế không có cái nào là tuyệt đối 100% hết, ngay cả với VBA cũng thế. Vì vậy dữ liệu nhập vào cần phải có sự giới hạn nào đó.
Tôi thấy nó vẫn ra kết quả = 5 mà Danh
 
Web KT

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

Back
Top Bottom