Почему при этом отображаются значения в строке выше вместо указанной формулы, если имеется только одна строка данных? - PullRequest
0 голосов
/ 12 февраля 2020

Это фрагмент моего макроса, и он должен вводить формулу, указанную в строке 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...