Lần sau nhớ post file xls nhé (vì không phải ai cũng xài Excel2007)
Tôi post lại đây
Function dem(cel As Range) Dim arr(1000) Dim temp(1000) For n = 1 To cel.Columns.Count + 1 If n = (cel.Columns.Count + 1) Then temp(n) = 1 Else temp(n) = cel.Cells(n) End If Next k = 0 j = 1 For i = 1 To cel.Columns.Count + 1 If temp(i) = 1 Then arr(j) = k j = j + 1 k = 0 Else k = k + 1 End If Next dem = Application.WorksheetFunction.Max(arr()) End Function
Cách củ chuối! Đêm bằng tay vậy!
Bạn xem file nha!PHP:Function dem(cel As Range) Dim arr(1000) Dim temp(1000) For n = 1 To cel.Columns.Count + 1 If n = (cel.Columns.Count + 1) Then temp(n) = 1 Else temp(n) = cel.Cells(n) End If Next k = 0 j = 1 For i = 1 To cel.Columns.Count + 1 If temp(i) = 1 Then arr(j) = k j = j + 1 k = 0 Else k = k + 1 End If Next dem = Application.WorksheetFunction.Max(arr()) End Function
Thân.
Function Dem(Rng As Range) As Long
Dim i As Long
Dim iRet As Long
Dim iCurrentCount As Long
For i = 1 To Rng.Columns.Count
If Rng.Cells(1, i) = 0 Then
iCurrentCount = iCurrentCount + 1
Else
If iCurrentCount > iRet Then iRet = iCurrentCount
iCurrentCount = 0
End If
Next
Dem = iRet
End Function
Đếm vầy nè, lẹ hơn!
PHP:Function Dem(Rng As Range) As Long Dim Clls As Range, k As Long For Each Clls In Rng Dem = ((Clls = 0) - Dem) * (Clls = 0) Next End Function
Code của ndu96081631 thì các số 0 ở cuối cùng lớn nhất thôi. Còn bạn thì lấy giá trị đếm số 0 cuối cùng trước 1 mà thôi! Còn nếu cuối cùng không có số 1 thì bạn đêm sai liền. Đây là bảng thông kê.Function Dem(Rng As Range) As Long Dim i As Long Dim iRet As Long Dim iCurrentCount As Long For i = 1 To Rng.Columns.Count If Rng.Cells(1, i) = 0 Then iCurrentCount = iCurrentCount + 1 Else If iCurrentCount > iRet Then iRet = iCurrentCount iCurrentCount = 0 End If Next Dem = iRet End Function [/code]
If iCurrentCount > iRet Then iRet = iCurrentCount
Dem = iRet
Function Dem(Rng As Range) As Long
Dim i As Long
Dim iRet As Long
Dim iCurrentCount As Long
For i = 1 To Rng.Columns.Count
If Rng.Cells(1, i) = 0 Then
iCurrentCount = iCurrentCount + 1
Else
If iCurrentCount > iRet Then iRet = iCurrentCount
iCurrentCount = 0
End If
Next
If iCurrentCount > iRet Then iRet = iCurrentCount
Dem = iRet
End Function
Sorry! Thiếu 1 dòng, lý ra phải là:Thế này chỉ đếm ra số ô có giá trị là 0 cuối cùng thôi, cuối cùng là ô có giá trị 1 thì trả về 0, hoặc trước đó có khoảng lớn hơn khoảng ở cuối thì nó vẫn trả về khoảng cuối.
Function Dem(Rng As Range) As Long
Dim Clls As Range, k As Long
For Each Clls In Rng
k = ((Clls = 0) - k) * (Clls = 0)
If k > Dem Then Dem = k
Next
End Function
Function Dem(Rng As Range) As Long
Dim Clls As Range, k As Long
For Each Clls In Rng
k = ((Clls = 0) - k) * (Clls = 0)
Dem = -k * (k > Dem) - Dem * (k <= Dem)
Next
End Function