Это фрагмент моего макроса, и он должен вводить формулу, указанную в строке 4 до конца набора данных. Однако, когда в предоставленном наборе данных есть только одна строка данных (данные начинаются со строки 4) вместо формулы, он просто выбирает значение в ячейке на одну строку выше. IE: R4 будет показывать R3 вместо "= IF (RC [-11]> RC [-10], (RC [-8] * RC [-11]) - (RC [-8] * RC [- 10]), 0) "
Lastrow = Cells(Rows.Count, 2).End(xlUp).Row
Range("I4").Select
ActiveCell.FormulaR1C1 = "=IF(ISBLANK(RC[-5]),RC[14],RC[1])": Range("I4:I" & Lastrow).FillDown
Range("R4").Select
ActiveCell.FormulaR1C1 = "=IF(RC[-11]>RC[-10],(RC[-8]*RC[-11])-(RC[-8]*RC[-10]),0)": Range("R4:R" & Lastrow).FillDown
Range("AA4").Select
ActiveCell.FormulaR1C1 = "=RC[-19]*RC[-18]": Range("AA4:AA" & Lastrow).FillDown
Я придумал обходную работу, однако мне любопытно, почему это вообще произошло.
If Lastrow = 4 Then
Range("I4").Select
ActiveCell.FormulaR1C1 = "=IF(ISBLANK(RC[-5]),RC[14],RC[1])"
Range("R4").Select
ActiveCell.FormulaR1C1 = "=IF(RC[-11]>RC[-10],(RC[-8]*RC[-11])-(RC[-8]*RC[-10]),0)"
Range("AA4").Select
ActiveCell.FormulaR1C1 = "=RC[-19]*RC[-18]"
Else
Range("I4").Select
ActiveCell.FormulaR1C1 = "=IF(ISBLANK(RC[-5]),RC[14],RC[1])": Range("I4:I" & Lastrow).FillDown
Range("R4").Select
ActiveCell.FormulaR1C1 = "=IF(RC[-11]>RC[-10],(RC[-8]*RC[-11])-(RC[-8]*RC[-10]),0)": Range("R4:R" & Lastrow).FillDown
Range("AA4").Select
ActiveCell.FormulaR1C1 = "=RC[-19]*RC[-18]": Range("AA4:AA" & Lastrow).FillDown
End If