У меня есть файл, который имеет значения даты в качестве заголовков столбцов, а последний столбец всегда будет помечен как «Grand Total». Я хочу, чтобы просмотреть заголовки столбцов (которые находятся в ячейках 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, и если он не содержит «Grand Totals», то формулы должны быть введены в ячейки M4 и M5 ... После того, как «Grand Totals» найдены [в верхней части цикла], мне нужно выйти из цикла (но а не суб).
Я попытался собрать воедино биты из кода, который я нашел:
Dim GrTot As String
Dim rng1 As Range
Set rng1 = Range("D4:I4")
GrTot = "Grand Total"
Range("D4").Select
Do While ActiveCell.Value <> GrTot
Но я не знаю, куда идти. Любая помощь приветствуется.
EDIT:
С тех пор я попробовал другой метод, основанный на примере найден 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
Но этот не работает корректно. Он будет проходить через штраф, записывая формулы, как я просил, но он не выходит из цикла, когда он достигает столбца «Общий итог». Что я здесь делаю неправильно?
Просто чтобы прояснить, вы хотите, чтобы проверить каждую ячейку и заполнить в формулах, если она не содержит «Гранд Итоги», или вы на самом деле хотите, чтобы петли до конца, когда вы найдете «Гранд Итоги»? –
Ваша цель звучит просто. Вы должны использовать формулы 'Const' для R1C1, чтобы сделать код более читаемым. Вы переходите из строки 4 в нижнюю часть 'UsedRange'? Вы можете использовать 'Do Not ActiveCell.Value = GrTot', но вы можете закончить бесконечный цикл! Вам нужно быть более ясным. – PatricK
D_Zab, мне нужно оба .... Мне нужно проверить каждую ячейку, если она не содержит «Grand Totals», тогда она должна заполнить формулу, но цикл должен завершиться, как только будут найдены «Grand Totals». Я просто не знаю, как пройти три диапазона за один раз, чтобы выполнить эти шаги. Итак, если D4 =/= «Grand Totals», тогда поместите формулу в L4 и L5, тогда если E4 =/= «Grand Totals», поместите ту же формулу в M4 и M5 и так далее, пока не будут найдены «Grand Totals» , затем выйдите из цикла. –