Правильно используйте утверждение IF-Else - PullRequest
0 голосов
/ 17 февраля 2019

Я использую приведенные выше уравнения в своем коде для предоставления значения в столбце M.

Теперь мне нужно использовать оператор «IF-ELSE», чтобы извлечь значение из столбца M и вернуть правильное соответствующее значение.в столбце N.

Однако мой код продолжает принимать значение только из столбца "N2" и возвращает его всем значениям в столбце N.

Как получить 'IF-ELSE "оператор для возврата смежных значений, например

(M2 -> N2) (M3 -> N3) и т. Д. И т. П.

Option Explicit
Sub STADPROJ()
Dim lastrow As Long

lastrow = Range("E" & Rows.Count).End(xlUp).Row

Range("H2:H" & lastrow).Formula = ("=G2 * 1.2")
Range("I2:I" & lastrow).Formula = ("=H2 * 1.5")
Range("J2:J" & lastrow).Formula = ("=I2 * 0.8")
Range("K2:K" & lastrow).Formula = ("=J2 * 1")
Range("L2:L" & lastrow).Formula = "=SUM(G2:K2)"
Range("M2:M" & lastrow).Formula = "=(F2 - L2)"

If Range("M2") < 200 Then
    Range("N2:N" & lastrow) = 1008
Else
    Range("N2:N" & lastrow) = 0
End If

End Sub

Ответы [ 2 ]

0 голосов
/ 17 февраля 2019

Вы можете снова использовать формулу:

Range("N2:N" & lastrow).FormulaR1C1 = "=IF(RC[-1] <200, 1008, 0 )"

Или, если вы хотите, чтобы в столбце N были только результирующие значения:

With Range("N2:N" & lastrow)
    .FormulaR1C1 = "=IF(RC[-1] <200, 1008, 0 )"
    .Value = .Value
End With 
0 голосов
/ 17 февраля 2019

Вместо конструкции VBA If ... Else используйте формулу.Поэтому замените:

If Range("M2") < 200 Then
    Range("N2:N" & lastrow) = 1008
Else
    Range("N2:N" & lastrow) = 0
End If

на:

Range("N2:N" & lastrow) = "=IF(M2 < 200, 1008, 0)"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...