Уважаемые оппоненты, имеется ряд значений работы системы
1 2 3 4 ... 145 0 146 147 ... 1098 0 ... , в которой 0 указывает на то что система дала сбой, как правильно составить макрос на выведение значений между отказами, т.е. между нулями.
Заранее спасибо, за то что уделили Ваше бесценное время С Уважением, Александр
Уважаемые оппоненты, имеется ряд значений работы системы
1 2 3 4 ... 145 0 146 147 ... 1098 0 ... , в которой 0 указывает на то что система дала сбой, как правильно составить макрос на выведение значений между отказами, т.е. между нулями.
Заранее спасибо, за то что уделили Ваше бесценное время С Уважением, Александрpernatij4
Sub tuk() With Me.Sheets(1) lr = .Cells(Rows.Count, 1).End(xlUp).Row For f = 1 To lr Sum = 0 st = f ret1: If .Cells(st, 1).Value > 0 Then Sum = Sum + .Cells(st, 1).Value st = st + 1 If st <= lr Then GoTo ret1 Else .Cells(f, 2).Value = Sum / (st - f): f = st Else .Cells(f, 2).Value = Sum / (st - f) f = st End If Next f End With End Sub
[/vba]
так можно [vba]
Код
Sub tuk() With Me.Sheets(1) lr = .Cells(Rows.Count, 1).End(xlUp).Row For f = 1 To lr Sum = 0 st = f ret1: If .Cells(st, 1).Value > 0 Then Sum = Sum + .Cells(st, 1).Value st = st + 1 If st <= lr Then GoTo ret1 Else .Cells(f, 2).Value = Sum / (st - f): f = st Else .Cells(f, 2).Value = Sum / (st - f) f = st End If Next f End With End Sub
K-SerJC, если Вас не затруднит, можете пжл добавить комментарии к строкам [vba]
Код
With Me.Sheets(1) lr = .Cells(Rows.Count, 1).End(xlUp).Row For f = 1 To lr Sum = 0 st = f ret1: If .Cells(st, 1).Value > 0 Then Sum = Sum + .Cells(st, 1).Value st = st + 1 If st <= lr Then GoTo ret1 Else .Cells(f, 2).Value = Sum / (st - f): f = st Else .Cells(f, 2).Value = Sum / (st - f) f = st
[/vba] Спасибо
K-SerJC, если Вас не затруднит, можете пжл добавить комментарии к строкам [vba]
Код
With Me.Sheets(1) lr = .Cells(Rows.Count, 1).End(xlUp).Row For f = 1 To lr Sum = 0 st = f ret1: If .Cells(st, 1).Value > 0 Then Sum = Sum + .Cells(st, 1).Value st = st + 1 If st <= lr Then GoTo ret1 Else .Cells(f, 2).Value = Sum / (st - f): f = st Else .Cells(f, 2).Value = Sum / (st - f) f = st
только сотрите код в своем посте, или оформите его тегом, согласно правил форума. [vba]
Код
Sub tuk() With Me.Sheets(1) ' используем сокращенное обращение к объектам листа 1 lr = .Cells(Rows.Count, 1).End(xlUp).Row ' вычисляем последнюю сроку в первом столбце For f = 1 To lr ' цикл по значениям Sum = 0 st = f ret1: If .Cells(st, 1).Value > 0 Then ' если не 0 со суммируем значение и переходм на следующее Sum = Sum + .Cells(st, 1).Value st = st + 1 If st <= lr Then GoTo ret1 Else .Cells(f, 2).Value = Sum / (st - f): f = st ' если закончились значения завершаем цикл Else .Cells(f, 2).Value = Sum / (st - f) ' рассчитываем среднее значение f = st End If Next f End With End Sub
[/vba]
только сотрите код в своем посте, или оформите его тегом, согласно правил форума. [vba]
Код
Sub tuk() With Me.Sheets(1) ' используем сокращенное обращение к объектам листа 1 lr = .Cells(Rows.Count, 1).End(xlUp).Row ' вычисляем последнюю сроку в первом столбце For f = 1 To lr ' цикл по значениям Sum = 0 st = f ret1: If .Cells(st, 1).Value > 0 Then ' если не 0 со суммируем значение и переходм на следующее Sum = Sum + .Cells(st, 1).Value st = st + 1 If st <= lr Then GoTo ret1 Else .Cells(f, 2).Value = Sum / (st - f): f = st ' если закончились значения завершаем цикл Else .Cells(f, 2).Value = Sum / (st - f) ' рассчитываем среднее значение f = st End If Next f End With End Sub