2015-02-11 77 views
0

我有一個文件,其日期值作爲列標題,最後一列將始終標記爲「總計」。我想要一種方法來查看列標題(在單元格D4:I4中)以及稍後輸入的公式。VBA Do直到找到字符串,然後退出步驟

例如,如果我們檢查D4,並且它不包含「大彙總」,然後我需要下面的公式輸入單元格L4和L5:

Range("L4").Select 
Application.CutCopyMode = False 
ActiveCell.FormulaR1C1 = _ 
    "=""Weekending ""&TEXT(RC[-8],""mm/dd/yyy"")&"" Compliant?""" 
Range("L5").Select 
ActiveCell.FormulaR1C1 = _ 
"=IF((IF(RC17=""Duplicate"",SUMIF(C2,RC2,C[-8]),RC[-8]))<27,""Compliant"", 
    IF((IF(RC17=""Duplicate"",SUMIF(C1,RC1,C[-8]),RC[-8]))<30,""Approaching Limit"", 
    ""Over""))" 

然後,它會去小區E4,如果它不包含「大總計」,那麼這些公式需要在單元格M4和M5中輸入......一旦找到「大總計」[在循環頂部],我需要退出循環(但而不是子)。

我試圖從位代碼拼湊,我發現:

Dim GrTot As String 
Dim rng1 As Range 
Set rng1 = Range("D4:I4") 
GrTot = "Grand Total" 

Range("D4").Select 
Do While ActiveCell.Value <> GrTot 

但我不知道哪裏去了。任何幫助表示讚賞。

編輯:

我曾經試圖根據一個例子的另一種方法發現here。這是我目前的:

Dim x As Integer 
Dim y As Integer 
With Worksheets("Pivot") 
x = 4 
Do Until .Cells(4, x).Value = "Grand Total" 
    For y = 12 To 16 
     .Cells(4, y).Formula = "=""Weekending ""&TEXT(RC[-8],""mm/dd/yyy"")&"" 
      Compliant?""" 
     .Cells(5, y).Formula = "=IF((IF(RC17=""Duplicate"",SUMIF(C2,RC2,C[-8]), 
      RC[-8]))<27,""Compliant"",IF((IF(RC17=""Duplicate"", 
      SUMIF(C1,RC1,C[-8]),RC[-8])) 
      <30,""Approaching Limit"",""Over""))" 
    Next y 
    x = x + 1 
Loop 
End With 
End Sub 

但是這個不能正確退出。它會循環良好,按照我的要求編寫公式,但它在達到「總計」列時不會退出循環。我在這裏做錯了什麼?

+0

只是爲了澄清,你想它來檢查每個單元和如果它不包含「大彙總」還是你真正想要的循環結束時,你會發現「大彙總」的公式填? – 2015-02-11 21:14:15

+0

你的目標聽起來很簡單。您應該對R1C1公式使用'Const'來使代碼更具可讀性。您正在從第4行循環到「UsedRange」的底部?你可以使用'直到ActiveCell.Value = GrTot',但你可能會結束無限循環!你需要更清楚。 – PatricK 2015-02-12 02:35:51

+0

D_Zab,我需要兩個....我需要檢查每個單元格,如果它不包含「大總計」,那麼它應該填寫公式,但循環應儘快結束「總計」找到。我真的不知道如何一次循環3個範圍來執行這些步驟。所以如果D4 =/=「大總計」,然後在L4和L5中輸入一個公式,那麼如果E4 =/=「總計」,則在M4和M5中輸入相同的公式,直到找到「總計」 ,然後退出循環。 – 2015-02-12 14:18:46

回答

1

循環遍歷範圍中的每個單元格;如果單元格沒有值,則可以將任何內容寫入單元格,然後寫入偏移量。一旦在你的範圍內找到總計,循環可以退出並移動到下一個範圍。

For Each item In Range 

    If item.Value = GrTot Then 
    Exit For 
    'Perform action on cell 
    item.Value = formula 
    item.offset(0,1).Value = formula 
    item.offset(0,2).Value = formula 

End If 
相關問題