2013-10-30 50 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並擺脫了'製作公式文本'。 –