2013-06-12 5 views
3

есть набор SUMIF формул, которые мне нужно настроить часто & Единственное, что мне нужно настроить, это его третью часть. Столбец 3-й части или суммы, столбцы должны быть сдвинуты вправо на 1 столбец каждый раз, когда выполняется макрос.Нужна помощь с excel macro-vba

Например, моя формула может быть: =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)"

+0

Изменение формулы прост. Трюк - это часть приращения. Делает ли что-либо в вашем макете sprteadsheet расширение столбца автоматически - иначе это значение нужно будет хранить в файле где-то – brettdj

ответ

3

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

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

первый пробег = SUMIF ($ A $ 1: $ A $ 10, $ A15, $ C $ 1: $ C $ 10)
second run = SUMIF ($ A $ 1: $ A $ 10, $ A15, $ D $ 1: $ D $ 10)
третий прогон = СУММ ($ A $ 1: $ A $ 10, $ А15, $ 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 
+0

Большое спасибо, я дам вам попробовать сейчас и посмотреть, смогу ли я заставить его работать. – user2094096

+0

Это работает, как вы сказали. Спасибо за вашу помощь! – user2094096

Смежные вопросы