Как автоматически проводить подсчет количества ячеек с максимальной последовательностью? Пример на скриншоте. ЦЕЛЬ: подсчитать количество ячеек с максимальной последовательностью (число в ячейке БОЛЕЕ 10), чтоб потом справа отобразилось значение, в данном конкретном примере 6 ячеек ПОДРЯД имеют числа более 10. Желтый цвет я выделил для наглядности.
Как автоматически проводить подсчет количества ячеек с максимальной последовательностью? Пример на скриншоте. ЦЕЛЬ: подсчитать количество ячеек с максимальной последовательностью (число в ячейке БОЛЕЕ 10), чтоб потом справа отобразилось значение, в данном конкретном примере 6 ячеек ПОДРЯД имеют числа более 10. Желтый цвет я выделил для наглядности.emegrelo
Всё получилось. А есть ли возможность окрасить эти ячейки с найденной максимальной последовательностью? У меня в файле почти 15000 ячеек и вручную долго искать найденную последовательность, а если бы она была уже окрашена к примеру в желтый цвет, так при прокрутке быстрее бы смог найти
Всё получилось. А есть ли возможность окрасить эти ячейки с найденной максимальной последовательностью? У меня в файле почти 15000 ячеек и вручную долго искать найденную последовательность, а если бы она была уже окрашена к примеру в желтый цвет, так при прокрутке быстрее бы смог найтиemegrelo
Dim lMoreThan As Long Dim lLength As Long, lRowsMax As Long Dim i As Long, j As Long, lRows As Long Dim arr()
Sub findSequenceNumbers() Call InitSet For i = 1 To UBound(arr) arr(i, 2) = 0 'допустим последоваетельности нет If arr(i, 1) > lMoreThan Then _ Call HowLong 'ищем длину последовательности arr(i, 3) = i + 1 'номер строки в текущих условиях Next Call LazyDogSort Call PaintItBlack End Sub Sub InitSet() lMoreThan = 10 lLength = 1 lRows = Range("c3").CurrentRegion.Rows.Count arr = Range(Cells(2, 3), Cells(lRows + 1, 5)).Value '1 столбец = значение, 2 = длина, 3 = номер строки 'каждой ячейке проставляем длину послдовательности End Sub Sub PaintItBlack() Range("c2").CurrentRegion.Interior.Pattern = xlNone Range(Cells(lRowsMax, 3), Cells(lRowsMax + lLength, 3)).Interior.Color _ = 8421504 Cells(lRowsMax, 3).Select End Sub Sub LazyDogSort() Application.ScreenUpdating = False Workbooks.Add: Set wbTem = ActiveWorkbook With wbTem.Sheets(1) .Range("a1").Resize(UBound(arr), UBound(arr, 2)) = arr ' doIt = .Range("a1").CurrentRegion.Sort(Range("b1"), xlDescending, Header:=xlNo) lRowsMax = .Range("c1") 'случай с несколькими одинаковыми здесь не рассматривается lLength = .Range("b1") End With wbTem.Close SaveChanges:=False Application.ScreenUpdating = True End Sub Sub HowLong() 'ищем длину последовательности For j = 1 To UBound(arr) - i If arr(i + j, 1) > lMoreThan Then lLength = lLength + 1 Else arr(i, 2) = lLength lLength = 1 Exit Sub End If Next End Sub
[/vba]
[vba]
Код
Dim lMoreThan As Long Dim lLength As Long, lRowsMax As Long Dim i As Long, j As Long, lRows As Long Dim arr()
Sub findSequenceNumbers() Call InitSet For i = 1 To UBound(arr) arr(i, 2) = 0 'допустим последоваетельности нет If arr(i, 1) > lMoreThan Then _ Call HowLong 'ищем длину последовательности arr(i, 3) = i + 1 'номер строки в текущих условиях Next Call LazyDogSort Call PaintItBlack End Sub Sub InitSet() lMoreThan = 10 lLength = 1 lRows = Range("c3").CurrentRegion.Rows.Count arr = Range(Cells(2, 3), Cells(lRows + 1, 5)).Value '1 столбец = значение, 2 = длина, 3 = номер строки 'каждой ячейке проставляем длину послдовательности End Sub Sub PaintItBlack() Range("c2").CurrentRegion.Interior.Pattern = xlNone Range(Cells(lRowsMax, 3), Cells(lRowsMax + lLength, 3)).Interior.Color _ = 8421504 Cells(lRowsMax, 3).Select End Sub Sub LazyDogSort() Application.ScreenUpdating = False Workbooks.Add: Set wbTem = ActiveWorkbook With wbTem.Sheets(1) .Range("a1").Resize(UBound(arr), UBound(arr, 2)) = arr ' doIt = .Range("a1").CurrentRegion.Sort(Range("b1"), xlDescending, Header:=xlNo) lRowsMax = .Range("c1") 'случай с несколькими одинаковыми здесь не рассматривается lLength = .Range("b1") End With wbTem.Close SaveChanges:=False Application.ScreenUpdating = True End Sub Sub HowLong() 'ищем длину последовательности For j = 1 To UBound(arr) - i If arr(i + j, 1) > lMoreThan Then lLength = lLength + 1 Else arr(i, 2) = lLength lLength = 1 Exit Sub End If Next End Sub