2013-10-30 54 views
0

我有需要创建某种循环的数据。基本上,我正在使用字符串搜索来搜索具有所需信息的列,然后根据各种标准进行求和。我的问题是数据是按月分隔的(使用数字命名;即:Jan = 01,Feb = 02等),我需要一种方法将所有信息合计到目前为止。我使用的公式如下:创建Excel的麻烦Do Loop

=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”​​,然后“Rev Bud 02 -2013”​​这一栏开始,直到“Rev Bud [我的选择] -2013”​​并添加所有这些一起。

回答

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 
+0

见编辑到第二个代码段。出于可读性的目的,我将你的公式分成块。在第三个公式字符串语句中,您将看到'x'变量。现在,每当它循环时,我都会随着x的变化将一个公式添加到下一个公式中,并将所有内容都放入C1中。 –

+0

当我运行这个时,我只是得到 “+ SUMPRODUCT(SUMIFS(INDEX('程序数据')A:GA,0,MATCH(”*“&AC7&”“&AC10&” - “&A&”“&B15&”*“,节目数据'!1:1,0)),'节目数据'!$ M:$ M,$ A2,'节目数据'!$ E:$ E,B2:B6))“ 作为文本值C1。我错过了如何修改它或什么? – Kara

+1

对不起,看到我最近的编辑,我把我换为X并摆脱了'制作公式文本'。 –