Tìm Max của Count?

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

bluecat

Thành viên mới
Tham gia
7/10/06
Bài viết
37
Được thích
1
Khi gặp số 1 thì đếm,sau đó lấy giá trị lớn nhất
tương tự cho các số khác 0
VD : Trong khoảng màu xanh Max của số 1 = 3
Xin chỉ giúp công thức hoặc cách viết hàm để làm chuyện này
 

File đính kèm

Lần chỉnh sửa cuối:
Khi gặp số 1 thìđếm,sau đó lấy giá trị lớn nhất
t
ương tự cho các số khác 0
VD : Trong khoảng m
àu xanh Max của số 1 = 3
Xin chỉ gi
úp công thức hoặc cách viết hàm để làm chuyện này


Bạn xem nhé :

PHP:
Function MaxCount(MyCell As Range, DK As Long) As Long
    Application.Volatile (False)
    If MyCell.Columns.Count <> 1 Then Exit Function
    Dim i As Long, MC As Long
    For i = 1 To MyCell.Rows.Count
        If MyCell(i) = DK Then
            MC = MC + 1
        Else
            If MC > MaxCount Then MaxCount = MC
            MC = 0
        End If
        If MC > MaxCount Then MaxCount = MC
    Next
End Function

Thân!
 

File đính kèm

OKBap ơi:
  1. Tác giả nói "tương tự cho các số khác 0". Theo mình hiểu thì đừng đếm những số bằng 0, nhưng cái hàm của OKBap đếm tuốt...

  2. Hình như chưa đúng yêu cầu. Cũng theo mình hiểu (xem ví dụ của bạn ấy ở cột B), thì bạn ấy muốn đếm theo nhóm những số giống nhau đứng liền nhau, nếu như bị ngắt bởi một số khác thì đếm lại từ đầu.
    Cụ thể là A7:A9: 3 số 1, kết quả là: Ở B7=0, B8=0, và B9=3 (tức là 3 số 1)
    Rồi từ A10:A14 là những số 0, cho nên A15:A16 phải đếm lại, và kết quả phải là: B15=0, B16=2

  3. Nhưng nói chung lại thì thật sự mình không hiểu cái hàm của OKBap đếm cái gì.
    Ở D1=19, là nó đếm số 1 trong dãy A1:A369?
    Nếu dùng COUNTIF để đếm có bao nhiêu số 1 trong dãy A1:A369, có đến 120 số 1 lận. Vậy 19 là cái gì vậy?
 
OKBap ơi:
  1. Tác giả nói "tương tự cho các số khác 0". Theo mình hiểu thì đừng đếm những số bằng 0, nhưng cái hàm của OKBap đếm tuốt...

  1. Anh BNTT ơi, không phải là đếm tuốt, mà là đếm giá trị nào khai báo trong hàm UDF. Cú pháp là:
    MaxCount(Vùng cần đếm, giá trị cần đếm)

    Vì yêu cầu đặt ra phải trả về giá trị lớn nhất của vùng đếm thỏa điều kiện giá trị đếm phải liên tục, không bị ngắt quãng.

    2. Hình như chưa đúng yêu cầu. Cũng theo mình hiểu (xem ví dụ của bạn ấy ở cột B), thì bạn ấy muốn đếm theo nhóm những số giống nhau đứng liền nhau, nếu như bị ngắt bởi một số khác thì đếm lại từ đầu.
    Cụ thể là A7:A9: 3 số 1, kết quả là: Ở B7=0, B8=0, và B9=3 (tức là 3 số 1)
    Rồi từ A10:A14 là những số 0, cho nên A15:A16 phải đếm lại, và kết quả phải là: B15=0, B16=2

    Đúng vậy, yêu cầu là đếm giá trị cho trước nhưng phải liên tục, giá trị trả về là giá trị lớn nhất trong những giá trị đếm đó.


    Nhưng nói chung lại thì thật sự mình không hiểu cái hàm của OKBap đếm cái gì.
    Ở D1=19, là nó đếm số 1 trong dãy A1:A369?
    Nếu dùng COUNTIF để đếm có bao nhiêu số 1 trong dãy A1:A369, có đến 120 số 1 lận. Vậy 19 là cái gì vậy?

Giá trị 19 là đúng và phù hợp với yêu cầu đề bài, vì từ ô A285:A302 có 19 số 1 liên tục. Có nghĩa là giá trị trả về là Max của những giá trị cần đếm thỏa mãn điếu kiện phải liên tục.
 
À, hiểu rồi. Nhưng phải nhờ Ca_dafi nói thì mới hiểu!
Chứ đọc cái đề bài thì chẳng hiểu như vậy. Cứ tưởng là tác giả muốn đếm theo từng nhóm...
 
Cho mình hỏi câu lệnh đó có ý nghĩa là gì vậy?
PHP:
Application.Volatile (False)

Application.Volatile
Bạn hãy đọc phần Help của Excel

Marks a user-defined function as volatile. A volatile function must be recalculated whenever calculation occurs in any cells on the worksheet. A nonvolatile function is recalculated only when the input variables change. This method has no effect if it's not inside a user-defined function used to calculate a worksheet cell.

expression.Volatile(Volatile)
expression Required. An expression that returns an Application object.

Volatile Optional Variant. True to mark the function as volatile. False to mark the function as nonvolatile. The default value is True

Example
This example marks the user-defined function "My_Func" as volatile. The function will be recalculated whenever calculation occurs in any cells on the worksheet on which this function appears.

Function My_Func()
Application.Volatile
'
' Remainder of the function
">
End Function

tại đây, từ bài #4 đến bài #7
 
Mình xin sửa lại chút xíu :

PHP:
Function MaxCount(MyCell As Range, DK As Long) As Long
    Application.Volatile (False)
    If MyCell.Columns.Count <> 1 Then Exit Function
    Dim i As Long, MC As Long
    For i = 1 To MyCell.Rows.Count
        If MyCell(i) = DK Then
            MC = MC + 1
        Else
            If MC > MaxCount Then MaxCount = MC
            MC = 0
        End If
    Next
    If MC > MaxCount Then MaxCount = MC
End Function

Thân!

Thân!
 
Web KT

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

Back
Top Bottom