Доброго времени Уважаемые специалисты, подскажите пожалуйста, как данную формулу в макросе, преобразовать именно в макрос. Чтобы не было формулы, но эффект работы остался тот же? [vba]
Код
Sub Nums() [b4] = 1 Range("b4:b" & Range("E" & Rows.Count).End(xlUp).Row).FormulaR1C1 = "=IF(RC4="""","""",MAX(R3C2:R[-1]C)+1)" End Sub
[/vba]
Доброго времени Уважаемые специалисты, подскажите пожалуйста, как данную формулу в макросе, преобразовать именно в макрос. Чтобы не было формулы, но эффект работы остался тот же? [vba]
Код
Sub Nums() [b4] = 1 Range("b4:b" & Range("E" & Rows.Count).End(xlUp).Row).FormulaR1C1 = "=IF(RC4="""","""",MAX(R3C2:R[-1]C)+1)" End Sub
Чтобы не было формулы, но эффект работы остался тот же
Можно так например: [vba]
Код
Sub Bmax_() Dim m&, i& m = Cells(3, 2).Value For i = 4 To Cells(Rows.Count, 5).End(xlUp).Row If Cells(i, 4).Value = "" Then Cells(i, 2).Value = "" End If If Cells(i, 4).Value <> "" And Cells(i, 2).Value <= m Then m = m Cells(i, 2).Value = m + 1 End If If Cells(i, 4).Value <> "" And Cells(i, 2).Value > m Then m = Cells(i, 2).Value End If Next i End Sub
Чтобы не было формулы, но эффект работы остался тот же
Можно так например: [vba]
Код
Sub Bmax_() Dim m&, i& m = Cells(3, 2).Value For i = 4 To Cells(Rows.Count, 5).End(xlUp).Row If Cells(i, 4).Value = "" Then Cells(i, 2).Value = "" End If If Cells(i, 4).Value <> "" And Cells(i, 2).Value <= m Then m = m Cells(i, 2).Value = m + 1 End If If Cells(i, 4).Value <> "" And Cells(i, 2).Value > m Then m = Cells(i, 2).Value End If Next i End Sub
А если не вдаваться в подробности вычислений по формулам, то, наверное, простейший вариант достижения цели - специальная вставка "только значений", рассчитанных по этим формулам. Тогда с минимальными изменениями, вносимыми в исходный макрос, получаем его следующий вид: [vba]
Код
Sub Nums() [b4] = 1 With Range("b4:b" & Range("E" & Rows.Count).End(xlUp).Row) .FormulaR1C1 = "=IF(RC4="""","""",MAX(R3C2:R[-1]C)+1)" .Copy .PasteSpecial xlPasteValues End With Application.CutCopyMode = False End Sub
[/vba]
А если не вдаваться в подробности вычислений по формулам, то, наверное, простейший вариант достижения цели - специальная вставка "только значений", рассчитанных по этим формулам. Тогда с минимальными изменениями, вносимыми в исходный макрос, получаем его следующий вид: [vba]
Код
Sub Nums() [b4] = 1 With Range("b4:b" & Range("E" & Rows.Count).End(xlUp).Row) .FormulaR1C1 = "=IF(RC4="""","""",MAX(R3C2:R[-1]C)+1)" .Copy .PasteSpecial xlPasteValues End With Application.CutCopyMode = False End Sub