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
但是這個不能正確退出。它會循環良好,按照我的要求編寫公式,但它在達到「總計」列時不會退出循環。我在這裏做錯了什麼?
只是爲了澄清,你想它來檢查每個單元和如果它不包含「大彙總」還是你真正想要的循環結束時,你會發現「大彙總」的公式填? – 2015-02-11 21:14:15
你的目標聽起來很簡單。您應該對R1C1公式使用'Const'來使代碼更具可讀性。您正在從第4行循環到「UsedRange」的底部?你可以使用'直到ActiveCell.Value = GrTot',但你可能會結束無限循環!你需要更清楚。 – PatricK 2015-02-12 02:35:51
D_Zab,我需要兩個....我需要檢查每個單元格,如果它不包含「大總計」,那麼它應該填寫公式,但循環應儘快結束「總計」找到。我真的不知道如何一次循環3個範圍來執行這些步驟。所以如果D4 =/=「大總計」,然後在L4和L5中輸入一個公式,那麼如果E4 =/=「總計」,則在M4和M5中輸入相同的公式,直到找到「總計」 ,然後退出循環。 – 2015-02-12 14:18:46