需要Macro-Excel帮助

我有一个= SUMIF公式需要调整每次macros运行。 公式的第三部分,总和范围,每次需要移动1列。 我将每月运行一次(每列代表1个月)

我得到了一些build议,使用LngCntvariables运行良好。 但是现在我不得不在同一个工作表中再添加3个部分,所有这些部分都使用= SUMIF公式,每次macros运行时都需要调整,但是总和范围不同(因此他们从不同的列中拉出)

我试图运行相同的LngCntvariables,但很快就遇到了保存计数的问题,所以第二部分的计数从2开始计算。 我可以调整起点,让+2得到适当的列,但问题是我需要每个月都这样做。 由于每次closures工作簿时都会重置计数,因此当我在第二个月运行时,计算将无法正常运行。

这里是我原来的post的链接: Excelmacros的帮助:LngCnt

这是代码的一部分(4部分中的2部分)

  ActiveCell.FormulaR1C1 = "=SUMIF('Worksheet1'!R5C1:R159C1,RC1,'Worksheet1'!R5C" & 13 + LngCnt & ":R159C" & 13 + LngCnt & ")" LngCnt = LngCnt + 1 Range("B13").Select Selection.AutoFill Destination:=Range("B13:B17"), Type:=xlFillDefault Range("B13:B17").Select Range("B23").Select ActiveCell.FormulaR1C1 = _ "=SUMIF('Worksheet2'!R3C6:R47C6,RC1,'Worksheet2'!R3C" & 16 + LngCnt & ":R47C" & 16 + LngCnt & ")" LngCnt = LngCnt + 2 Range("B23").Select Selection.AutoFill Destination:=Range("B23:B32"), Type:=xlFillDefault Range("B23:B32").Select 

更新

 > Public LngCnt As Long Sub Actual() ' ' Actual Macro ' LngCount = ActiveWorkbook.Names("state").Value ActiveCell.FormulaR1C1 = "=SUMIF('Workbook1'!R5C1:R159C1,RC1,'Workbook1'!R5C" & 13 + LngCnt & ":R159C" & 13 + LngCnt & ")" LngCnt = LngCnt + 1 Range("B13").Select Selection.AutoFill Destination:=Range("B13:B17"), Type:=xlFillDefault Range("B13:B17").Select ActiveWorkbook.Names("state").Value = LngCnt End Sub 

在工作簿中保留这个variables的另一种方法是不使用直接赋值给单元格,而是使用一个命名variables。 从公式function区中,打开名称pipe理器,并添加一个名为“状态”的新名称。 在这一点上你可以给它任何价值。 我们将修改您的VBA来更新它。

名称管理器

然后,在您的代码中,您可以通过执行以下操作来为此“variables”赋值:

ActiveWorkbook.Names("state").Value = LngCnt

您可以通过以下方式检索值:

LngCount = ActiveWorkbook.Names("state").Value

更新

 Public LngCnt As Long Sub Actual() ' ' Actual Macro Dim startRange as Range: Set startRange = Range("B13") LngCnt = Replace(ActiveWorkbook.Names("state").Value, "=", "") startRange.FormulaR1C1 = "=SUMIF('Workbook1'!R5C1:R159C1,RC1,'Workbook1'!R5C" & 13 + LngCnt & ":R159C" & 13 + LngCnt & ")" LngCnt = LngCnt + 1 startRange.AutoFill Destination:=Range("B13:B17"), Type:=xlFillDefault 'Range("B13:B17").Select '## I comment this line because I don't think its necessary. ActiveWorkbook.Names("state").Value = LngCnt End Sub 

运行macros两次后,名称(“状态”)的保存值为2 。 我保存并closures工作簿,重新打开它,并确认它仍然是2

截图

保持一个“国家”最好的办法之一就是拥有一个储存状态的细胞

sheets("state").range("a1").Value

得到价值和

sheets("state").range("a1").Value = 1

将该值设置为1。

如果您在原始工作表中有空间,则不需要新工作表,只需对其进行相应更新即可