Нужна помощь с excel macro- vba

у меня есть набор SUMIF формул, которые мне нужно часто корректировать, и единственное, что мне нужно корректировать, - это третья часть. Столбцы 3-й части или диапазона сумм необходимо сдвигать вправо на 1 столбец при каждом запуске макроса.

Например, моя формула может быть такой: =SUMIF($A$1:$A$10,$A15,!$C$1:$C$10)

  • Я хотел бы иметь возможность запустить макрос, который скорректировал бы указанную выше формулу так, чтобы вместо добавления из Column C1:C10 она добавляла Column D1:10.
  • Затем при следующем запуске макроса формула снова изменится на столбец E и так далее.

Затем эта формула будет перетащена вниз во все необходимые строки ниже, при этом изменится только строка № 2-й части.

Есть ли простой способ добиться этого?

Заранее спасибо!

Вот код VB, который я получил при записи макроса, который изменяет третью часть, но на данный момент он будет изменять его только на этот конкретный столбец всякий раз, когда я его запускаю.

ActiveCell.FormulaR1C1 = "=SUMIF('WorksheetA'!R5C1:R159C1,RC1,'WorksheetA'!RC13:R159C13)"


person user2094096    schedule 12.06.2013    source источник
comment
Изменить формулу просто. Уловка заключается в приращении. Предоставляет ли что-либо в вашем макете sprteadsheet расширение столбца автоматически - иначе это значение нужно будет где-то сохранить в файле   -  person brettdj    schedule 12.06.2013


Ответы (1)


Этот код хранит количество запусков в общедоступной переменной LngCNt. Обратите внимание, что счетчик будет устанавливаться на 0 при каждом открытии файла.

Переменная LngCnt используется для увеличения формулы, т.е.

первый запуск = СУММЕСЛИ ($ A $ 1: $ A $ 10, $ A15, $ C $ 1: $ C $ 10)
второй запуск = СУММЕСЛИ ($ A $ 1: $ A $ 10, $ A15, $ D $ 1: $ D $ 10 )
третий прогон = СУММЕСЛИ ($ A $ 1: $ A $ 10, $ A15, $ E $ 1: $ E $ 10)

Public LngCnt As Long
Sub Macro2()
  ActiveCell.FormulaR1C1 = "=SUMIF(R1C1:R10C1,R[4]C1,R1C" & 3 + LngCnt & ":R10C" & 3 + LngCnt & ")"
  LngCnt = LngCnt + 1
End Sub
person brettdj    schedule 12.06.2013
comment
Большое спасибо, я попробую сейчас и посмотрю, смогу ли я заставить его работать. - person user2094096; 12.06.2013