Mình thường thấy bạn @HieuCD làm như vậy màLạ nhỉ, 1 cái tìm số lượng, 1 cái tìm max sao lại ghép vào nhau?
Mình thường thấy bạn @HieuCD làm như vậy màLạ nhỉ, 1 cái tìm số lượng, 1 cái tìm max sao lại ghép vào nhau?
Ghép không khó nhưng nó hơi vô duyên và làm code chậm điMình thường thấy bạn @HieuCD làm như vậy mà
Bạn xem code đúng không nhé.Cảm ơn bạn @phuocam liệu 2 hàm này ghép với nhau được không bạn?
Function solan(ByVal mang As Range, Optional ByVal so As Integer = 2) As String
Dim arr, i As Long, j As Long, a As Long, n As Long, tong As Integer, max As Integer
arr = mang.Value
n = UBound(arr, 1)
For j = 1 To UBound(arr, 2)
a = 0
For i = 1 To n
If UCase(arr(i, j)) = "X" Then
a = a + 1
If a >= so Then tong = tong + 1
Else
If a >= max Then max = a
a = 0
End If
Next i
Next j
solan = tong & ";" & max
End Function
=solan(C5:F27,3)
Dùng công thức cho trường hợp n ngày liên tiếp:Nhờ các bạn trên diễn đàn giúp đỡ như file đính kèm
Cảm ơn các bạn
Cảm ơn bạn công thứcDùng công thức cho trường hợp n ngày liên tiếp:
=SUM(IFERROR(SQRT(FREQUENCY(ROW(C5:F28)+(COLUMN(C5:F28)-1)*ROWS(C5:C28),IF(C5:F28<>"x",ROW(C5:F28)+(COLUMN(C5:F28)-1)*ROWS(C5:C28)))-2)^2,""))
Bấm Ctrl+Shift+Enter!
Muốn thay đổi số ngày liên tiếp khác thì sửa số -2 thành -3 hoặc-4... Muốn tìm ngày liên tiếp lớn nhất thì sửa Sum thành Max là được.
Cảm ơn bạn @snow25 công thức quá hay và quá tuyệt vờiBạn xem code đúng không nhé.
Mã:Function solan(ByVal mang As Range, Optional ByVal so As Integer = 2) As String Dim arr, i As Long, j As Long, a As Long, n As Long, tong As Integer, max As Integer arr = mang.Value n = UBound(arr, 1) For j = 1 To UBound(arr, 2) a = 0 For i = 1 To n If UCase(arr(i, j)) = "X" Then a = a + 1 If a >= so Then tong = tong + 1 Else If a >= max Then max = a a = 0 End If Next i Next j solan = tong & ";" & max End Function
Mã:=solan(C5:F27,3)
Chào bạn @snow25 để công thức tiện xử dụng bạn có thể sửa giúp mình thêm 1 hằng số được khôngBạn xem code đúng không nhé.
Mã:Function solan(ByVal mang As Range, Optional ByVal so As Integer = 2) As String Dim arr, i As Long, j As Long, a As Long, n As Long, tong As Integer, max As Integer arr = mang.Value n = UBound(arr, 1) For j = 1 To UBound(arr, 2) a = 0 For i = 1 To n If UCase(arr(i, j)) = "X" Then a = a + 1 If a >= so Then tong = tong + 1 Else If a >= max Then max = a a = 0 End If Next i Next j solan = tong & ";" & max End Function
Mã:=solan(C5:F27,3)
Đây bạn xem.Mặc định của nó là "X" nếu bạn không chọn gì.Chào bạn @snow25 để công thức tiện xử dụng bạn có thể sửa giúp mình thêm 1 hằng số được không
=solan(C5:F27,3) tức là khi tìm bất kỳ hằng số nào đó không phải là X
If UCase(arr(i, j)) = "X" Then
Thì bạn thêm =solan("Y";C5:F27,3) thì bạn thêm hằng số "Y' vào biểu thức
Cảm ơn bạn!
=solan(B4:B8,2,"x")
Function solan(ByVal mang As Range, Optional ByVal so As Integer = 2, Optional ByVal dk As String = "X") As String
Dim arr, i As Long, j As Long, a As Long, n As Long, tong As Integer, max As Integer
arr = mang.Value
n = UBound(arr, 1)
For j = 1 To UBound(arr, 2)
a = 0
For i = 1 To n
If UCase(arr(i, j)) = UCase(dk) Then
a = a + 1
If a >= so Then tong = tong + 1
Else
If a >= max Then max = a
a = 0
End If
Next i
Next j
solan = tong & ";" & max
End Function
Cảm ơn bạn @snow25Đây bạn xem.Mặc định của nó là "X" nếu bạn không chọn gì.Mã:=solan(B4:B8,2,"x")
Mã:Function solan(ByVal mang As Range, Optional ByVal so As Integer = 2, Optional ByVal dk As String = "X") As String Dim arr, i As Long, j As Long, a As Long, n As Long, tong As Integer, max As Integer arr = mang.Value n = UBound(arr, 1) For j = 1 To UBound(arr, 2) a = 0 For i = 1 To n If UCase(arr(i, j)) = UCase(dk) Then a = a + 1 If a >= so Then tong = tong + 1 Else If a >= max Then max = a a = 0 End If Next i Next j solan = tong & ";" & max End Function