YES Sir. Thank you very muchLầ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