正确使用IF-Else语句

时间:2019-02-16 21:38:17

标签: vba

我在代码中使用上面的等式在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 :(得分:1)

使用公式代替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)"

答案 1 :(得分:0)

您可以再次使用公式:

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