2013-06-12 122 views
3

有一套SUMIF公式,我需要频繁调整&我需要调整的唯一事情是它的第三部分。每次宏运行时,第三部分或总和范围列需要向右移一列。需要Excel的帮助宏 - vba

例如,我的公式可以是: =SUMIF($A$1:$A$10,$A15,!$C$1:$C$10)

  • 我想能够运行一个宏,将调整上述 式,使得代替从Column C1:C10添加,这将增加 Column D1:10
  • 然后下一次我运行这个宏时,这个公式会再次改变到E列,等等。

这个公式将被拖拽到下面所有必要的行上,唯一改变的是第二部分的行#。

有没有简单的方法来实现这个目标?

在此先感谢!

这是我从录制一个改变第三部分的宏获得的VB代码,但是到现在为止,只要我运行它,它就只会将其更改为该特定列。

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

+0

更改公式很简单。诀窍是增量部分。你的spadsadsheet布局中是否有任何东西会自动提供列扩展名 - 否则这个值将需要存储在某个地方的文件中 – brettdj

回答

3

此代码存储的它在一个公共变量LngCNt被运行的次数。注意,计数将每个时间被设置为0的文件开

LngCnt变量用于递增式即

第一运行= SUMIF($ A $ 1:$ A $ 10,$ A15, $ C $ 1:$ C $ 10)
第二次运行= SUMIF($ A $ 1:$ A $ 10,$ A15,$ D $ 1:$ D $ 10)
第三次运行= SUMIF($ 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 
+0

非常感谢,我现在就试试看,看看我能否实现它。 – user2094096

+0

它就像你说的那样工作。谢谢你的帮助! – user2094096