Страницы: 1
RSS
Сумма каждых n элементов массива
 
Добрый день!
Есть условный массив в 120 элементов. Нужно из него создать новый в 10 элементов с суммами элементов первого с 1 по 12, с 13 по 24 и т.д.
К сожалению, не могу даже понять, как составить алгоритм разбиения первого массива на эти подмассивы для суммирования.
Прошу помощи.
Программный код, как и яды, лучше тестировать по капельке
Люблю изобретать велосипеды с колесами произвольной формы
 
Hypohelix, а как вы хотите определять с какого по какой? где-то вносить  интервал ручками или как?

вариант без примера
Код
=СУММ(ИНДЕКС($P$2:$P$32;R1;1):ИНДЕКС($P$2:$P$32;S1;1))

где $P$2:$P$32 - данные с вашими значении для суммирования;
S1- ячейка в которой заданы начало интервала;
R1- ячейка в которой заданы конец интервала.
Изменено: Mershik - 18.11.2019 14:45:48
Не бойтесь совершенства. Вам его не достичь.
 
Допустим массив находится в А1:А120, то в B1  =СУММ(СМЕЩ($A$1:$A$12;12*(СТРОКА(B1)-1)) и протянуть вниз
 
Код
Sub ShowExample()
    Dim a As Variant
    ReDim a(1 To 120)
    
    Dim i As Long
    For i = LBound(a) To UBound(a)
        a(i) = i
    Next
    
    Dim b As Variant
    b = SplitArray(a, 12)
    Cells(1, 1).Resize(UBound(b, 1) - LBound(b, 1) + 1).Value = Application.Transpose(b)
End Sub

Function SplitArray(a As Variant, n As Long) As Variant
    Dim dic As Object
    Set dic = CreateObject("Scripting.Dictionary")
    Dim i As Long
    Dim j As Long
    i = LBound(a)
    Do
        If i > UBound(a) Then Exit Do
        dic.Item(dic.Count) = 0
        For j = 1 To n
            dic.Item(dic.Count - 1) = dic.Item(dic.Count - 1) + a(i)
            i = i + 1
        Next
    Loop
    SplitArray = dic.Items()
End Function
 
У меня массив уже загнан в VBA, поэтому вариант МатросНаЗебре, мне больше подходит. Сейчас разберусь, как именно он работает, и адаптирую к своим нуждам. Спасибо за варианты для формул - тоже посмотрю.
Огромное спасибо всем!
Программный код, как и яды, лучше тестировать по капельке
Люблю изобретать велосипеды с колесами произвольной формы
Страницы: 1
Наверх