Đếm số từ trong một chuỗi (1 người xem)

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

lovestorn1981

Thành viên mới
Tham gia
19/12/09
Bài viết
41
Được thích
1
Chào các bạn

Mình đang gặp khó khăn về hàm : trong 1 chuỗi ký tự chữ , mình muốn viết hàm phân biệt được
những dòng <10 từ và >20 từ , mình đã viết được hàm phân biệt được >20 từ rồi nhưng còn <10 từ
thì chưa viết được

Cảm ơn các bạn rất nhiều.
 

File đính kèm

Chào các bạn

Mình đang gặp khó khăn về hàm : trong 1 chuỗi ký tự chữ , mình muốn viết hàm phân biệt được
những dòng <10 từ và >20 từ , mình đã viết được hàm phân biệt được >20 từ rồi nhưng còn <10 từ
thì chưa viết được

Cảm ơn các bạn rất nhiều.
 

File đính kèm

Chào các bạn

Mình đang gặp khó khăn về hàm : trong 1 chuỗi ký tự chữ , mình muốn viết hàm phân biệt được
những dòng <10 từ và >20 từ , mình đã viết được hàm phân biệt được >20 từ rồi nhưng còn <10 từ
thì chưa viết được

Cảm ơn các bạn rất nhiều.
Thử xem:
PHP:
=IF(B8="","",CHOOSE(MATCH(INT(LEN(SUBSTITUTE(TRIM(B8)," ",REPT(" ",1000)))/1000)+1,{0,10,20},1),"<10","10-20",">20"))
Hoặc kết thúc bằng Ctrl+Shift+Enter
PHP:
=IF(B8="","",CHOOSE(MATCH(COUNT(1/(MID(TRIM(B8),ROW($1:$500),1)=" "))+1,{0,10,20},1),"<10","10-20",">20"))
 
Chào các bạn

Mình đang gặp khó khăn về hàm : trong 1 chuỗi ký tự chữ , mình muốn viết hàm phân biệt được
những dòng <10 từ và >20 từ , mình đã viết được hàm phân biệt được >20 từ rồi nhưng còn <10 từ
thì chưa viết được

Cảm ơn các bạn rất nhiều.
Thử thêm Lookup() cho đủ bộ:
PHP:
=LOOKUP(LEN(TRIM(B8))-LEN(SUBSTITUTE(TRIM(B8)," ",""))+(B8<>""),{0,1,10,21},{"","<10","10-20",">20"})
Enter fill xuống.

Chúc bạn ngày vui.
 
Lần chỉnh sửa cuối:
Cảm ơn các bạn nhiều

mình hỏi thêm 1 chút cũng với hàm này

Từ <10 : Trả về "không hợp lệ"
Từ >21 : Trả về "không hợp lệ"
Từ 11-20 : Trả về "hợp lệ"

Mong các bạn sửa giúp.
 
Lần chỉnh sửa cuối:
Cảm ơn các bạn nhiều

mình hỏi thêm 1 chút cũng với hàm này

Từ <10 : Trả về "không hợp lệ"
Từ >21 : Trả về "không hợp lệ"
Từ 11-20 : Trả về "hợp lệ"

Mong các bạn sửa giúp.
PHP:
C8=IF(B8="","",IF(MATCH(LEN(TRIM(B8))-LEN(SUBSTITUTE(TRIM(B8)," ",""))+1,{0,11,21},1)=2,"Hợp lệ","Không hợp lệ"))
Enter fill xuống.

Chúc bạn ngày vui.
 
Không hiểu TRIM để làm gì khi mà SUBSTITUTE làm cái việc loại ký tự " "
Đó là sự 'cẩn thận' tốt thôi bạn, giả sử có khoảng trắng ở đầu và cuối đoạn, kể cả có thừa khoảng trắng giữa 2 chữ (thay vì chỉ 1 khoảng trắng, người nhập liệu gõ 2 khoảng trắng), thì tính sai ngay, Substitute(," ",...) mục đích chỉ cắt 1 " " ở giữa các chữ.

Chúc bạn ngày vui.
 
Lần chỉnh sửa cuối:
Không có thừa đâu em, dùng TRIM() để cắt những khoảng trắng thừa thải 'nếu có' phát sinh trong lúc nhập liệu.

Chúc em ngày vui.
Trim trong Len(Trim(chuoi)) thì đúng rồi ạ.
Còn Trim trong SUBSTITUTE(Trim(Chuoi)," ","") thì không cần chứ anh.
Vì SUBSTITUTE(chuoi," ","") cũng có kết quả như SUBSTITUTE(Trim(chuoi)," ","").
 
Đó là sự 'cẩn thận' tốt thôi bạn, giả sử có khoảng trắng ở đầu và cuối đoạn, kể cả có thừa khoảng trắng giữa 2 chữ (thay vì chỉ 1 khoảng trắng, người nhập liệu gõ 2 khoảng trắng), thì tính sai ngay, Substitute(," ",...) mục đích chỉ cắt 1 " " ở giữa các chữ.

Chúc bạn ngày vui.
Bạn có n từ <t1>, ..., <tn> và trong chuỗi là

" <t1> <t2> ... <tn> "
Đầu, giữa và cuối có số dấu cách tùy ý.

TRIM(B8) = "<t1> <t2>...<tn>" - giữa mỗi cặp từ là 1 dấu cách, tổng cộng có (n-1) dấu cách.

LEN(TRIM(B8)) = (tổng số ký tự của n từ) + (n-1)

SUBSTITUTE(B8;" ";"") = "<t1><t2>...<tn>" - giữa các từ không có dấu cách

LEN(SUBSTITUTE(B8;" ";"")) = (tổng số ký tự của n từ)

=>
LEN(TRIM(B1))-LEN(SUBSTITUTE(B1;" ";""))+1 =
= (tổng số ký tự của n từ) + (n-1) - (tổng số ký tự của n từ) + 1 =
(n-1) + 1 = n

Bạn nói sai ở chỗ nào? Hay đúng là tôi nhầm lẫn chỗ nào chăng?

Chú ý là tôi cố tình dùng chữ đỏ để nói đến TRIM thứ hai.

Chúc bạn ngày vui
 
Lần chỉnh sửa cuối:
Bạn có n từ <t1>, ..., <tn> và trong chuỗi là

" <t1> <t2> ... <tn> "
Đầu, giữa và cuối có số dấu cách tùy ý.

TRIM(B8) = "<t1> <t2>...<tn>" - giữa mỗi cặp từ là 1 dấu cách, tổng cộng có (n-1) dấu cách.

LEN(TRIM(B8)) = (tổng số ký tự của n từ) + (n-1)

SUBSTITUTE(B8;" ";"") = "<t1><t2>...<tn>" - giữa các từ không có dấu cách

LEN(SUBSTITUTE(B8;" ";"")) = (tổng số ký tự của n từ)

=>
LEN(TRIM(B1))-LEN(SUBSTITUTE(B1;" ";""))+1 =
= (tổng số ký tự của n từ) + (n-1) - (tổng số ký tự của n từ) + 1 =
(n-1) + 1 = n

Bạn nói sai ở chỗ nào? Hay đúng là tôi nhầm lẫn chỗ nào chăng?

Chú ý là tôi cố tình dùng chữ đỏ để nói đến TRIM thứ hai.

Chúc bạn ngày vui
Bạn cứ xem ví dụ trong file: không Trim() và có Trim() sẽ khắc biết có sự khác biệt về số kết quả trả về.

Chúc anh em ngày thiệt vui.
 

File đính kèm

Chú ý là tôi cố tình dùng chữ đỏ để nói đến TRIM thứ hai.
À, à!

Tôi đọc không hết ý bạn, đúng là Substitute() đã làm luôn cái vụ của Trim() thứ hai (tức đã có Subsitute() rồi thì không cần dùng Trim() nữa).

Cảm ơn bạn nha.

Chúc anh em ngày vui.
 
Trim trong Len(Trim(chuoi)) thì đúng rồi ạ.
Còn Trim trong SUBSTITUTE(Trim(Chuoi)," ","") thì không cần chứ anh.
Vì SUBSTITUTE(chuoi," ","") cũng có kết quả như SUBSTITUTE(Trim(chuoi)," ","").
Đọc bài này thấy cũng vui vui! liên tưởng đến bài "Đố vui về chim" của em, và 1 trong câu trả lời của anh: Nhà Xã hội học.
http://www.giaiphapexcel.com/diendan/threads/Đố-vui-về-chim.129916/#post-815792

Cũng 'Chim' và 'Trim' trại trại vậy.

Ngẫm cũng nực cười!

Chúc anh em ngày thiệt vui.
/-*+//-*+//-*+/
 

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

Back
Top Bottom