gpt4 book ai didi

excel - 在宏方面需要帮助 - Excel

转载 作者:行者123 更新时间:2023-12-04 21:25:29 25 4
gpt4 key购买 nike

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

我得到了一些使用 LngCnt 的建议变量效果很好。但是现在我被迫在同一个工作表中添加 3 个以上的部分,这些部分都使用 =SUMIF 公式,每次运行宏时都需要调整,但总和范围不同(因此它们从不同的列中提取)

我尝试运行相同的 LngCnt变量但很快遇到了保存计数的问题,因此第二部分的计数在计算之前从 2 开始。我可以调整起点,以便 +2 为我提供适当的列,但问题是我需要每个月都这样做。由于每次关闭工作簿时计数都会重置,因此当我在第 2 个月运行它时它不会正常运行。

这是我原来帖子的链接:
Excel-Macro Help: 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

最佳答案

将此变量保留在工作簿中的另一种方法是使用命名变量,而无需将其直接分配给单元格。在“公式”功能区中,打开名称管理器,然后添加一个名为“state”的新名称。此时你可以给它任何值。我们将修改您的 VBA 以对其进行更新。

Names Manager

然后,在您的代码中,您可以通过执行以下操作为该“变量”分配一个值:
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

运行宏两次后,Name("state") 的保存值为 2 .我保存并关闭工作簿,重新打开它,并确认它仍然是 2 :

Screenshot

关于excel - 在宏方面需要帮助 - Excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17197768/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com