Я использую код VBA, чтобы получить общие значения из столбца в зависимости от некоторых критериев. Прикрепленное изображение, которое я использую, чтобы объяснить, чего я пытаюсь достичь.
Я хочу сделать это, поскольку я буду суммировать все значения и помещать их в другую ячейку, и, поскольку я использую динамические переменные в своей формуле, я не хочу писать несколько раз один и тот же код.
Что-то вроде: total = total + valueOnCell [i]
Не очень крутой код:
Function siteTraffic(currentMonth As Integer, currentYear As Integer) As Integer
Dim total As Integer
Dim start As Integer
Dim step As Integer
If currentMonth = 7 Then
Sheets("Calculations").Range("d7").Formula = "=SUM(SUMIFS(Data[Sessions],Data[Month of the year],""=" & currentMonth & """,Data[Year],""=" & currentYear & """,Data[Segment],{""=Geo - International"",""=Geo - US & LATAM""}))"
ElseIf currentMonth = 8 Then
Sheets("Calculations").Range("d7").Formula = "=SUM(SUMIFS(Data[Sessions],Data[Month of the year],""=" & currentMonth & """,Data[Year],""=" & currentYear & """,Data[Segment],{""=Geo - International"",""=Geo - US & LATAM""}))" _
& "+SUM(SUMIFS(Data[Sessions],Data[Month of the year],""= 7 "",Data[Year],""=" & currentYear & """,Data[Segment],{""=Geo - International"",""=Geo - US & LATAM""}))"
ElseIf currentMonth = 9 Then
Sheets("Calculations").Range("d7").Formula = "=SUM(SUMIFS(Data[Sessions],Data[Month of the year],""=" & currentMonth & """,Data[Year],""=" & currentYear & """,Data[Segment],{""=Geo - International"",""=Geo - US & LATAM""}))" _
& "+SUM(SUMIFS(Data[Sessions],Data[Month of the year],""= 7 "",Data[Year],""=" & currentYear & """,Data[Segment],{""=Geo - International"",""=Geo - US & LATAM""}))" _
& "+SUM(SUMIFS(Data[Sessions],Data[Month of the year],""= 8 "",Data[Year],""=" & currentYear & """,Data[Segment],{""=Geo - International"",""=Geo - US & LATAM""}))"
End If
End Select
End Function
Я пытаюсь изменить свой код, чтобы он был динамически записан, но я получил ошибку переполнения
Function siteTraffic(currentMonth As Integer, currentYear As Integer) As Integer
'currentMonth will be 01-12
'currentYear will be >=2016
Dim step As Integer
Dim start As Integer
For start = 1 To currentMonth
Sheets("Calculations").Range("d7").Formula = "=SUM(SUMIFS(Data[Sessions],Data[Month of the year],""=" & start & """,Data[Year],""=" & currentYear & """,Data[Segment],{""=Geo - International"",""=Geo - US & LATAM""}))"
step = Sheets("Calculations").Range("d7").Value + step
Next start
End If
Мой вопрос: как мне сохранить значение, вычисленное каждой ячейкой, в переменной, чтобы мне нужно было только суммировать каждое значение с помощью итерации, а не копировать / вставлять один и тот же код снова и снова?