Как исправить формулу суммы, которая меняет диапазоны - PullRequest
0 голосов
/ 20 сентября 2019
Sub formu 
    Range(“d” & Rows.count).end(xlUp).offset(2,0).formular1c1 = “=sum(R[-9]c:r[-1]c)”
End sub

В настоящее время это моя формула, но она меняется еженедельно, поэтому я могу быть R [-14] c: r [-1] c на следующей неделе или R [-6] c: r [-1] c на следующей неделе.Как заставить мою формулу меняться еженедельно, чтобы мне не приходилось вручную пересчитывать ячейку?

Ответы [ 2 ]

2 голосов
/ 20 сентября 2019

Скажите, что ваши текущие недели будут следующими данными:

enter image description here

Следующий код добавит формулу в ячейку под последней ячейкой:

Sub formu()

Dim lr As Long
With Formulas
    lr = .Cells(.Rows.Count, 4).End(xlUp).Row
    .Cells(lr + 1, 4).FormulaR1C1 = "=sum(R[-" & lr & "]c:r[-" & lr - (lr - 1) & "]c)"
End With

End Sub

Принимая во внимание, что ссылка на лист - это кодовое имя листа, содержащее данные.Вывод:

enter image description here

Формула в этой ячейке в настоящее время:

=SUM(R[-10]C:R[-1]C)

Вы можете найти лист CodeName в проводнике проекта и дайте ему полное имя для прямой ссылки:)

0 голосов
/ 20 сентября 2019

Прежде всего, важно знать, всегда ли в вашем еженедельном отчете информация размещена в одном и том же порядке.Например, все числа начинаются с Range("A2").Если это так, я рекомендую вам работать с TagNames.Предполагая, что данные, которые необходимо суммировать, начинаются с Range("A2")

Dim Col as integer 
Dim sRow, eRow as long 's = start, e = end

Col = Range("A2").Column 'Col = 1
sRow = Range("A2").Row  'sRow = 2
eRow = Range("A2").Rnd(xlDown).Row 'eRow = row of the last cell with information to sum

Range(Cells(sRow,Col),Cells(eRow,Col)).Name = "range2Sum" 'Yo assign a tagname

'The you can use what you have done

Range(“d” & Rows.count).end(xlUp).offset(2,0).formula = “=sum(range2Sum)” 'use that tagname that is visible in excel
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...