无法创建excel Do Loop

时间:2013-10-30 19:15:07

标签: excel loops for-loop while-loop

我有需要创建某种循环的数据。基本上,我正在搜索一个列,其中包含使用字符串搜索所需的信息,然后根据各种条件求和。我的问题是数据是按月分隔的(使用数字标记;即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的所有先前值执行此公式并将它们添加到一起,向上添加 UNTIL 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”​​然后“Rev Bud 02 -2013”​​的列开始进行总结......一直到“Rev Bud [我的选择] -2013”​​并添加所有这些在一起。

1 个答案:

答案 0 :(得分: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