Nhờ các bác chỉ cách "Đếm tần suất chuỗi số 0 liên tục trong 1 dãy số"

Liên hệ QC

yemjovial

Thành viên mới
Tham gia
5/4/17
Bài viết
11
Được thích
4
Trước tiên em xin gửi lời chào lời chúc sức khỏe đến các bác quản trị Web: www.giaiphapexcel.com. và toàn thể thành viên nhà mình :D
Em rất kính nể các bác pro Excel bởi vì e cũng rất thích Excel nhưng chỉ biết chút ít thui. :(
Hiện nay e đang gặp 1 chút rắc rối mong các bác bờ rô giúp e với ạ!
Cụ thể thế này:
E có rất nhiều cột. mỗi cột toàn là các số 00110021001210101000... đại loại thế. giờ em muốn
* Đếm tần suất của chuỗi số 0 lớn nhất -- kể từ khi có 1 số khác 0 ở đầu chuỗi và cuối chuỗi đó (Trong cả cột vài nghìn số nhé. chỉ cần cách j đếm được chuỗi đó xuất hiện dài nhất bằng bao nhiêu là ok). ví dụ 1000120000100000000002 thì kết quả = 10 (Max chuỗi = 10)
* VÀ: Đếm tuần suất chuỗi số 0 xuất hiện giống nhau nhiều nhất

(Cụ thể các bác xem file giúp em)
Cảm ơn các bác nhiều!
 

File đính kèm

  • Nhờ GPE giúp.xlsx
    11.4 KB · Đọc: 57
Trước tiên em xin gửi lời chào lời chúc sức khỏe đến các bác quản trị Web: www.giaiphapexcel.com. và toàn thể thành viên nhà mình :D
Em rất kính nể các bác pro Excel bởi vì e cũng rất thích Excel nhưng chỉ biết chút ít thui. :(
Hiện nay e đang gặp 1 chút rắc rối mong các bác bờ rô giúp e với ạ!
Cụ thể thế này:
E có rất nhiều cột. mỗi cột toàn là các số 00110021001210101000... đại loại thế. giờ em muốn
* Đếm tần suất của chuỗi số 0 lớn nhất -- kể từ khi có 1 số khác 0 ở đầu chuỗi và cuối chuỗi đó (Trong cả cột vài nghìn số nhé. chỉ cần cách j đếm được chuỗi đó xuất hiện dài nhất bằng bao nhiêu là ok). ví dụ 1000120000100000000002 thì kết quả = 10 (Max chuỗi = 10)
* VÀ: Đếm tuần suất chuỗi số 0 xuất hiện giống nhau nhiều nhất

(Cụ thể các bác xem file giúp em)
Cảm ơn các bác nhiều!
Thử xem
=Len(Chuỗi) - len(SUBSTITUTE(Chuỗi, "0","")
 
Trước tiên em xin gửi lời chào lời chúc sức khỏe đến các bác quản trị Web: www.giaiphapexcel.com. và toàn thể thành viên nhà mình :D
Em rất kính nể các bác pro Excel bởi vì e cũng rất thích Excel nhưng chỉ biết chút ít thui. :(
Hiện nay e đang gặp 1 chút rắc rối mong các bác bờ rô giúp e với ạ!
Cụ thể thế này:
E có rất nhiều cột. mỗi cột toàn là các số 00110021001210101000... đại loại thế. giờ em muốn
* Đếm tần suất của chuỗi số 0 lớn nhất -- kể từ khi có 1 số khác 0 ở đầu chuỗi và cuối chuỗi đó (Trong cả cột vài nghìn số nhé. chỉ cần cách j đếm được chuỗi đó xuất hiện dài nhất bằng bao nhiêu là ok). ví dụ 1000120000100000000002 thì kết quả = 10 (Max chuỗi = 10)
* VÀ: Đếm tuần suất chuỗi số 0 xuất hiện giống nhau nhiều nhất

(Cụ thể các bác xem file giúp em)
Cảm ơn các bác nhiều!
Thử:
1/ Số lần xuất hiện của chuỗi "0":
Mã:
=SUM(N(FREQUENCY(IF($E$1:$E$23=0,ROW($1:$23)),IF($E$1:$E$23<>0,ROW($1:$23)))>0))
Kết thúc bằng Ctrl+Shift+Enter.

2/ Số lần xuất hiện giống nhau nhiều nhất:
Mã:
=MAX(FREQUENCY(IFERROR(1/(1/FREQUENCY(IF($E$1:$E$23=0,ROW($1:$23)),IF($E$1:$E$23<>0,ROW($1:$23)))),""),ROW($1:$23)))
Kết thúc bằng Ctrl+Shift+Enter.

Thân
 

File đính kèm

  • Nhờ GPE giúp.xlsx
    12.2 KB · Đọc: 28
Thử xem
=Len(Chuỗi) - len(SUBSTITUTE(Chuỗi, "0","")

Thanks bác nhưng chưa đúng ý em bác ạ! :(
Bài đã được tự động gộp:

Thử:
1/ Số lần xuất hiện của chuỗi "0":
Mã:
=SUM(N(FREQUENCY(IF($E$1:$E$23=0,ROW($1:$23)),IF($E$1:$E$23<>0,ROW($1:$23)))>0))
Kết thúc bằng Ctrl+Shift+Enter.

2/ Số lần xuất hiện giống nhau nhiều nhất:
Mã:
=MAX(FREQUENCY(IFERROR(1/(1/FREQUENCY(IF($E$1:$E$23=0,ROW($1:$23)),IF($E$1:$E$23<>0,ROW($1:$23)))),""),ROW($1:$23)))
Kết thúc bằng Ctrl+Shift+Enter.

Thân

Thanks bác. nhưng chưa đúng ý em bác ạ. Ý em là tìm chuỗi số 0 dài nhất trong cột đó. và chuỗi số 0 giống nhau xuất hiện nhiều nhất trong cột đó: Ví dụ:
10200100100200100000000001:
ở đây có 6 chuỗi số 0. Trong đó có 1 chuỗi có 1 chữ số 0. Có 4 chuỗi có 2 chữ số 0 liên tiếp và 1 chuỗi có 10 số 0 liên tiếp.
Em muốn có công thức nào đếm được dãy số dài vài chục nghìn số bao gồm rất nhiều chuỗi tương tự thế này và cho ra kết quả lớn nhất ví dụ trên kết quả =10 VÀ cho ra giá trị trùng nhau nhiều nhất ở ví dụ trên sẽ cho ra =2 (nghĩa là chuỗi đó cứ 2 số 0 có lại gặp 1 số #0 xuất hiện nhiều nhất)

Bác giúp em với ạ
 
Lần chỉnh sửa cuối:
Cảm ơn bác nhưng chưa đúng ý em bác ạ! :(
Bài đã được tự động gộp:



Cảm ơn bác. nhưng chưa đúng ý em bác ạ. Ý em là tìm chuỗi số 0 dài nhất trong cột đó. và chuỗi số 0 giống nhau xuất hiện nhiều nhất trong cột đó: Ví dụ:
10200100100200100000000001:
ở đây có 6 chuỗi số 0. Trong đó có 1 chuỗi có 1 chữ số 0. Có 4 chuỗi có 2 chữ số 0 liên tiếp và 1 chuỗi có 10 số 0 liên tiếp.
Em muốn có công thức nào đếm được dãy số dài vài chục nghìn số bao gồm rất nhiều chuỗi tương tự thế này và cho ra kết quả lớn nhất ví dụ trên kết quả =10 VÀ cho ra giá trị trùng nhau nhiều nhất ở ví dụ trên sẽ cho ra =2 (nghĩa là chuỗi đó cứ 2 số 0 có lại gặp 1 số #0 xuất hiện nhiều nhất)

Bác giúp em với ạ
Tại cái file của bạn làm gì có chuỗi nào đâu
 
Cảm ơn bác. nhưng chưa đúng ý em bác ạ. Ý em là tìm chuỗi số 0 dài nhất trong cột đó. và chuỗi số 0 giống nhau xuất hiện nhiều nhất trong cột đó: Ví dụ:
10200100100200100000000001:
ở đây có 6 chuỗi số 0. Trong đó có 1 chuỗi có 1 chữ số 0. Có 4 chuỗi có 2 chữ số 0 liên tiếp và 1 chuỗi có 10 số 0 liên tiếp.
Em muốn có công thức nào đếm được dãy số dài vài chục nghìn số bao gồm rất nhiều chuỗi tương tự thế này và cho ra kết quả lớn nhất ví dụ trên kết quả =10 VÀ cho ra giá trị trùng nhau nhiều nhất ở ví dụ trên sẽ cho ra =2 (nghĩa là chuỗi cứ 2 số 1 có 1 số #0 xuất hiện nhiều nhất)
Bác giúp em với ạ
Tôi lại tưởng bạn muốn đếm có bao nhiêu lần chuỗi số "0" xuất hiện, chứ yêu cầu vậy thì chỉnh:
1/ Số lần xuất hiện phần tử của chuỗi "0" nhiều nhất:
Mã:
=MAX(FREQUENCY(IF(($E$1:$E$100=0)*($E$1:$E$100<>""),ROW($1:$100)),IF(($E$1:$E$100<>0)*($E$1:$E$100<>""),ROW($1:$100))))
Kết thúc bằng Ctrl+Shift+Enter.

2/ Số lần xuất hiện giống nhau nhiều nhất:
Mã:
=MAX(FREQUENCY(IFERROR(1/(1/FREQUENCY(IF(($E$1:$E$100=0)*($E$1:$E$100<>""),ROW($1:$100)),IF(($E$1:$E$100<>0)*($E$1:$E$100<>""),ROW($1:$100)))),""),ROW($1:$100)))
Kết thúc bằng Ctrl+Shift+Enter.

Muốn chọn nhiều dòng thay số 100 thành 1000 chẳng hạn.

Thân
 

File đính kèm

  • Nhờ GPE giúp.xlsx
    12.2 KB · Đọc: 32
Tôi lại tưởng bạn muốn đếm có bao nhiêu lần chuỗi số "0" xuất hiện, chứ yêu cầu vậy thì chỉnh:
1/ Số lần xuất hiện phần tử của chuỗi "0" nhiều nhất:
Mã:
=MAX(FREQUENCY(IF(($E$1:$E$100=0)*($E$1:$E$100<>""),ROW($1:$100)),IF(($E$1:$E$100<>0)*($E$1:$E$100<>""),ROW($1:$100))))
Kết thúc bằng Ctrl+Shift+Enter.

2/ Số lần xuất hiện giống nhau nhiều nhất:
Mã:
=MAX(FREQUENCY(IFERROR(1/(1/FREQUENCY(IF(($E$1:$E$100=0)*($E$1:$E$100<>""),ROW($1:$100)),IF(($E$1:$E$100<>0)*($E$1:$E$100<>""),ROW($1:$100)))),""),ROW($1:$100)))
Kết thúc bằng Ctrl+Shift+Enter.

Muốn chọn nhiều dòng thay số 100 thành 1000 chẳng hạn.

Thân

Úi giời cảm ơn bác nhiều lắm. nhưng bác giúp e lại 1 chút. Ý 1 chọn chuỗi 0 dài nhất thì quá OK rồi. nhưng ý 2 của em là tìm chuỗi trùng nhau nhiều nhất ấy ạ. ví dụ: 1001001004100100 thì nó kết quả là = 2 (nghĩa là chuỗi đó có 2 số 0 thôi) chuỗi đó xuất hiện nhiều nhất. chứ em ko cần tổng chuỗi giống nhau. hihi
Cảm ơn bác Phan Thế Hiệp nhiều lắm
 
Úi giời cảm ơn bác nhiều lắm. nhưng bác giúp e lại 1 chút. Ý 1 chọn chuỗi 0 dài nhất thì quá OK rồi. nhưng ý 2 của em là tìm chuỗi trùng nhau nhiều nhất ấy ạ. ví dụ: 1001001004100100 thì nó kết quả là = 2 (nghĩa là chuỗi đó có 2 số 0 thôi) chuỗi đó xuất hiện nhiều nhất. chứ em ko cần tổng chuỗi giống nhau. hihi
Cảm ơn bác Phan Thế Hiệp nhiều lắm
Thích thì làm thêm yêu cầu mới:
3/ Số lần xuất hiện phần tử "0" giống nhau nhiều nhất:
Mã:
=MODE(IFERROR(1/(1/FREQUENCY(IF(($E$1:$E$100=0)*($E$1:$E$100<>""),ROW($1:$100)),IF(($E$1:$E$100<>0)*($E$1:$E$100<>""),ROW($1:$100)))),""))

Thân
 

File đính kèm

  • Nhờ GPE giúp.xlsx
    12.6 KB · Đọc: 29
Tôi lại tưởng bạn muốn đếm có bao nhiêu lần chuỗi số "0" xuất hiện, chứ yêu cầu vậy thì chỉnh:
1/ Số lần xuất hiện phần tử của chuỗi "0" nhiều nhất:
Mã:
=MAX(FREQUENCY(IF(($E$1:$E$100=0)*($E$1:$E$100<>""),ROW($1:$100)),IF(($E$1:$E$100<>0)*($E$1:$E$100<>""),ROW($1:$100))))
Kết thúc bằng Ctrl+Shift+Enter.

2/ Số lần xuất hiện giống nhau nhiều nhất:
Mã:
=MAX(FREQUENCY(IFERROR(1/(1/FREQUENCY(IF(($E$1:$E$100=0)*($E$1:$E$100<>""),ROW($1:$100)),IF(($E$1:$E$100<>0)*($E$1:$E$100<>""),ROW($1:$100)))),""),ROW($1:$100)))
Kết thúc bằng Ctrl+Shift+Enter.

Muốn chọn nhiều dòng thay số 100 thành 1000 chẳng hạn.

Thân
Anh @Phan Thế Hiệp !
Ý của chủ topic là thế này:
A1 = 1000304045055555500503503 -> độ dài chuỗi số 0 liên tục 3111211 -> lặp lại chuỗi 1 lặp 5 ,chuỗi 2 lặp 1, chuỗi 3 lặp 1
A2 = 122222222222400032000230000023302030200
A3 .... 50000 dòng thế này
Mong muốn kết quả:
B1 = 3 (độ dài chuỗi số 0 liên tục dài nhất trong chuỗi)
C1 = 5 ( một chuỗi số 0 liên tục lặp lại nhiều nhất)
(1 số 0 cũng tính là 1 chuỗi)
Anh ấy đặt câu hỏi thì ngắn mà chúc với khen các anh chị cô thầy GPE thì dài.
Nên hơi khó hiểu chút
 
Anh @Phan Thế Hiệp !
Ý của chủ topic là thế này:
A1 = 1000304045055555500503503 -> độ dài chuỗi số 0 liên tục 3111211 -> lặp lại 511
A2 = 122222222222400032000230000023302030200
A3 .... 50000 dòng thế này
Mong muốn kết quả:
B1 = 3 (độ dài chuỗi số 0 liên tục dài nhất trong chuỗi)
C1 = 5 ( một chuỗi số 0 liên tục lặp lại nhiều nhất)
(1 số 0 cũng tính là 1 chuỗi)
Anh ấy đặt câu hỏi thì ngắn mà chúc với khen các anh chị cô thầy GPE thì dài.
Nên hơi khó hiểu chút
Có lẽ do chủ thớt ghi yêu cầu mà không toát lên chính xác được ý mình muốn.
Dòm dữ liệu trong file nó khác với lời ghi trên trang GPE.
Bạn có thể nhìn cách tô màu các số 0 trong dữ liệu của chủ thớt sẽ hiểu chủ thớt muốn điều gì.

Vụ này mấy anh em GPE hay giải bài đã từng gặp, nên không còn lạ lẫm nữa.

Khà khà khà.
Thân
 
Thích thì làm thêm yêu cầu mới:
3/ Số lần xuất hiện phần tử "0" giống nhau nhiều nhất:
Mã:
=MODE(IFERROR(1/(1/FREQUENCY(IF(($E$1:$E$100=0)*($E$1:$E$100<>""),ROW($1:$100)),IF(($E$1:$E$100<>0)*($E$1:$E$100<>""),ROW($1:$100)))),""))

Thân

Tuyệt vời ông mặt trời. Cảm ơn bác nhiều lắm ạ!
Bài đã được tự động gộp:

Có lẽ do chủ thớt ghi yêu cầu mà không toát lên chính xác được ý mình muốn.
Dòm dữ liệu trong file nó khác với lời ghi trên trang GPE.
Bạn có thể nhìn cách tô màu các số 0 trong dữ liệu của chủ thớt sẽ hiểu chủ thớt muốn điều gì.

Vụ này mấy anh em GPE hay giải bài đã từng gặp, nên không còn lạ lẫm nữa.

Khà khà khà.
Thân

Chuẩn a ơi. diễn giải thật khó. :D người hiểu được nhanh như bác tìm lại càng khó hơn. Đa tạ!
 
Tuyệt vời ông mặt trời. Cảm ơn bác nhiều lắm ạ!
Chuẩn a ơi. diễn giải thật khó. :D người hiểu được nhanh như bác tìm lại càng khó hơn. Đa tạ!
Không có chi đâu bạn!

Tôi thường trêu:" Trong anh em, chỉ có anh @huuthang_bd và tôi có thể hợp với nghề "thầy bói"

Khà khà khà.
Thân
 
Dạng bài này có rồi mà. Bài đếm X O... và thêm một ý "Chuỗi 0 xuất hiện giống nhau nhiều nhất" nhưng mà chủ thớt bị loạn ngữ pháp tiếng Việt.
Haizzz!!!!
 
Những bài toán như thế này thuộc loại kinh điển. Nhưng khi biến tấu cho phù hợp với trường hợp cụ thể thì không phải ai cũng làm giống nhau.

Thực ra công thức có thể ngắn hơn và tốt hơn. Tức vd. trong IF thứ 2 không tạo mảng tổng hay tích để làm điều kiện. Tạo mảng tổng hay tích hiển nhiên là tốn điện nước.

Độ dài dãy số 0 liên tiếp dài nhất:
Mã:
=MAX(FREQUENCY(IF(($E$1:$E$100<>0)+($E$1:$E$100=""),"",ROW($1:$100)),IF($E$1:$E$100=0,"",ROW($1:$100))))
 
Tuyệt vời ông mặt trời. Cảm ơn bác nhiều lắm ạ!
Bài đã được tự động gộp:



Chuẩn a ơi. diễn giải thật khó. :D người hiểu được nhanh như bác tìm lại càng khó hơn. Đa tạ!
Những bài toán như thế này thuộc loại kinh điển. Nhưng khi biến tấu cho phù hợp với trường hợp cụ thể thì không phải ai cũng làm giống nhau.

Thực ra công thức có thể ngắn hơn và tốt hơn. Tức vd. trong IF thứ 2 không tạo mảng tổng hay tích để làm điều kiện. Tạo mảng tổng hay tích hiển nhiên là tốn điện nước.

Độ dài dãy số 0 liên tiếp dài nhất:
Mã:
=MAX(FREQUENCY(IF(($E$1:$E$100<>0)+($E$1:$E$100=""),"",ROW($1:$100)),IF($E$1:$E$100=0,"",ROW($1:$100))))

Okê. Thanks bác nhé! :) nhưng mà công thức của bác chỉ tính được chuỗi liền kề. không tính được khoảng trống. hihi. Em lấy công thức bác Hiệp ok rồi ạ.
 
Okê. Cảm ơn bác nhé! :) nhưng mà công thức của bác chỉ tính được chuỗi liền kề. không tính được khoảng trống. hihi.
Bạn nói về khoảng trống nào đấy? Vì trong dữ liệu và cả trong mô tả tôi không thấy đề cập tới khoảng trống bí hiểm nào. Có lẽ tôi không để ý chăng?
Em lấy công thức bác Hiệp ok rồi ạ.
Thế thì bạn không hiểu cách hoạt động của diễn đàn rồi. Diễn đàn dùng cho nhiều người. Trả lời ở đây không chỉ để cho bạn. Bạn để ý là tôi không trích bài của bạn. Tôi trả lời cho những người khác.
 
Lần chỉnh sửa cuối:
Bạn nói về khoảng trống nào đấy? Vì trong dữ liệu và cả trong mô tả tôi không thấy đề cập tới khoảng trống bí hiểm nào. Có lẽ tôi không để ý chăng?

Thế thì bạn không hiểu cách hoạt động của diễn đàn rồi. Diễn đàn dùng cho nhiều người. Trả lời ở đây không chỉ để cho bạn. Bạn để ý là tôi không trích bài của bạn. Tôi trả lời cho những người khác.

Bài của anh Phan Thế Hiệp đã post công khai trên diễn đàn bạn ko thấy hay sao? Tôi có giấu diếm j bài giải của anh Hiệp đâu, có chi mà bạn chỉ trích. tôi ko nói đến cell trống nghĩa là tôi chưa lường trước được điều đó nhưng anh Hiệp lại cho tôi công thức bao gồm cả khoảng trống ấy, chẳng phải trên cả tuyệt vời hay sao. Hajz
 
Bài của anh Phan Thế Hiệp đã post công khai trên diễn đàn bạn ko thấy hay sao? Tôi có giấu diếm j bài giải của anh Hiệp đâu, có chi mà bạn chỉ trích. tôi ko nói đến cell trống nghĩa là tôi chưa lường trước được điều đó nhưng anh Hiệp lại cho tôi công thức bao gồm cả khoảng trống ấy, chẳng phải trên cả tuyệt vời hay sao. Hajz
Ơ, sao bạn lại cáu nhỉ.

Tôi chỉ giải thích cho bạn là tại sao cho dù bạn đã nhận được lời giải rồi mà tôi vẫn cố tình viết bài. Thế thôi.

Còn chuyện "chỗ trống" thì đúng là tôi không hiểu bạn đang nói về cái gì nên hỏi thôi. Nếu bạn không muốn "giúp" thì nói một câu: "Tự tìm hiểu nhé bạn". Thế cũng được, chứ sao phải cáu nhỉ.
 
Lần chỉnh sửa cuối:
Xin chào! Các anh em có thể giúp mình nếu trường hợp dãy số thay đổi thành hàng ngang (file đính kèm) thì sửa công thức như thế nào ạ? Xin cam on!
 

File đính kèm

  • Nhờ moi nguoi giúp đỡ.xlsx
    12.4 KB · Đọc: 10
Hi cảm ơn mọi người, mình làm được rồi.
 
Web KT
Back
Top Bottom