0

我有需要为其创建某种循环的数据。基本上,我正在使用字符串搜索搜索包含所需信息的列,然后根据各种条件求和。我的问题是数据按月份分隔(使用数字名称;即;Jan=01、Feb=02 等),我需要一种方法来添加迄今为止的所有信息。我使用的公式如下:

=SUMPRODUCT(SUMIFS(INDEX('Program Data'!A:GA,0,MATCH("*"&AC7&" "&AC10&" -"&A8&" "&B15&"*",
  'Program Data'!1:1,0)),'Program Data'!$M:$M,$A2,'Program Data'!$E:$E,B2:B6))

其中 A8 是包含所选感兴趣月份的单元格。所以让我们说A8 = 08(八月)。我想对 A8 的所有先前值执行此公式并将它们加在一起,向上添加直到A8 等于当前选择。(或者当 A8<09 时,这可以实现)

所以假设 A8=08,我希望它从 A8=01 开始,运行这段代码并找到值。然后运行 ​​A8=02,找到该值,然后将其添加到第一个值,继续此操作直到我们到达 A8=08,然后报告最终值。由于个位数的月份是用两位数写的(即 01、02、03 等)并使用前导 0 进行搜索,我认为循环说明它是相当重要的,直到我们得到两位数的月份(10 , 11, 12)....

类似于(这不是代码,只是一般的思考过程):

Sub Loop1()
Dim x as integer
x=01
Do until x = Cell A8
      (insert the formula above, but with "&A8&" = x)
x + 1 = x
End Sub

但即使是这个思考过程似乎也没有将结果公式值加在一起,所以我需要帮助。我不知道如何在 excel 中执行 do 循环,因此我们真诚地感谢您提供的任何帮助。恐怕我真的不知道从哪里开始,或者每个语句的逻辑顺序。感谢您的关注!

编辑

请原谅我糟糕的描述,希望这能澄清:

代码是表格的一部分。单元格 A8 是一个下拉选项,您可以在其中选择要检查的数字月份 (01, 02 --> 12)。然后,该公式使用一组参考单元格查找字符串,例如“Rev Bud 08 -2013”​​(其中 08 来自您的选择),然后查找具有该标题的列,然后执行 sumifs。但我想要一个年初至今,所以我希望它对每个 x 执行一次公式,从 x=1 开始,直到并包括在单元格 A8 中选择的任何值,然后添加所有的结果一起执行并在我选择的单元格中显示该值,例如单元格 C50。所以我希望它从标题为“Rev Bud 01 -2013”​​的列开始进行 sumifs,然后是“Rev Bud 02 -2013”​​......一直到“Rev Bud [我的选择] -2013”

4

1 回答 1

1

关于公式应该如何更改以及最终公式应该驻留在哪个单元格中,我并没有完全关注这个问题,但这里是如何构建你的循环:

Sub Loop1()
    Dim x As Integer: x = 1

    Do Until x = Range("A8") + 1
        range("'your cell'").Formula = 'your formula'

        x = x + 1
    Loop
End Sub

我猜你想每个月循环并把那部分添加到公式中,然后把结果放在这样的单元格中:

Sub Loop1()
    Dim x As Integer: x = 1
    Dim formulaString As String

    Do Until x = Range("A8") + 1
        If formulaString = "" Then
            formulaString = "="
        Else
            formulaString = formulaString & " + "
        End If

        formulaString = formulaString + "SUMPRODUCT(SUMIFS(INDEX('Program Data'!A:GA,0,MATCH("
        formulaString = formulaString & """*""" & "&AC7&""" & Chr(32) & """&AC10&""" & " -"""
        formulaString = formulaString & "&A" & x & "&"" """
        formulaString = formulaString & "&B15&" & """*""" & ",'Program Data'!1:1,0)),"
        formulaString = formulaString & "'Program Data'!$M:$M,$A2,'Program Data'!$E:$E,B2:B6))"

        x = x + 1
    Loop

    Range("C1").Value = formulaString
End Sub
于 2013-10-30T19:24:09.090 回答