Здравствуйте!
Как-то мне понадобилось просуммировать диапазон с шагом через две ячейки. Долго искал, были варианты, но решил написать свою функцию SumStep.
=SumStep(диапазон, шаг_по_колонкам, шаг_по_строкам).
Можно выделять строку, столбец, или другой массив с несколькими строками и столбцами. Просуммируются только ячейки в столбцах с шагом "шаг_по_колонкам" и строках "шаг_по_строкам". Отсчет и Суммирования начинается с первой ячейки диапазона.
Все параметры обязательны. Если в параметрах задать нули, то будет проведено сумирование всего диапазона.
Смотрите, пользуйтесь, а если можете упростить, или улудшить функцию - СПАСИБО.
Вот код функции, может кому то понадобиться... )
Function SumStep(rg As Range, step_column As Long, step_row As Long) As Double
Dim summa As Double
summa = 0
With ActiveSheet
If step_row = 0 And step_column = 0 Then
summa = WorksheetFunction.Sum(rg)
End If
If step_row = 0 And step_column <> 0 Then
For x = 1 To rg.Rows.Count
For y = 1 To rg.Columns.Count Step step_column
summa = summa + rg(x, y).Value
Next y
Next x
End If
If step_row <> 0 And step_column = 0 Then
For x = 1 To rg.Rows.Count Step step_row
For y = 1 To rg.Columns.Count
summa = summa + rg(x, y).Value
Next y
Next x
End If
If step_row <> 0 And step_column <> 0 Then
For x = 1 To rg.Rows.Count Step step_row
For y = 1 To rg.Columns.Count Step step_column
summa = summa + rg(x, y).Value
Next y
Next x
End If
SumStep = summa
End With
End Function
Как-то мне понадобилось просуммировать диапазон с шагом через две ячейки. Долго искал, были варианты, но решил написать свою функцию SumStep.
=SumStep(диапазон, шаг_по_колонкам, шаг_по_строкам).
Можно выделять строку, столбец, или другой массив с несколькими строками и столбцами. Просуммируются только ячейки в столбцах с шагом "шаг_по_колонкам" и строках "шаг_по_строкам". Отсчет и Суммирования начинается с первой ячейки диапазона.
Все параметры обязательны. Если в параметрах задать нули, то будет проведено сумирование всего диапазона.
Смотрите, пользуйтесь, а если можете упростить, или улудшить функцию - СПАСИБО.
Вот код функции, может кому то понадобиться... )
Function SumStep(rg As Range, step_column As Long, step_row As Long) As Double
Dim summa As Double
summa = 0
With ActiveSheet
If step_row = 0 And step_column = 0 Then
summa = WorksheetFunction.Sum(rg)
End If
If step_row = 0 And step_column <> 0 Then
For x = 1 To rg.Rows.Count
For y = 1 To rg.Columns.Count Step step_column
summa = summa + rg(x, y).Value
Next y
Next x
End If
If step_row <> 0 And step_column = 0 Then
For x = 1 To rg.Rows.Count Step step_row
For y = 1 To rg.Columns.Count
summa = summa + rg(x, y).Value
Next y
Next x
End If
If step_row <> 0 And step_column <> 0 Then
For x = 1 To rg.Rows.Count Step step_row
For y = 1 To rg.Columns.Count Step step_column
summa = summa + rg(x, y).Value
Next y
Next x
End If
SumStep = summa
End With
End Function