2017-08-11 66 views
0

计算尝试如果标准被满足的公式应用到细胞中。如果首字母出现在列D到G中,宏将首先搜索表单以查找所有行并保留所有行。在我的宏中,我正在查找首字母RPR(其他首字母为NO)。如果它在D中找到RPR但不在E中,那么计算应该是K * 0.3。如果情况并非如此,那么我需要继续寻找第二种情况,依此类推。我附上了表格的图片,因为我不确定我在下面发布的内容是否会正确显示。 table of dataExcel的VBA多如果那么对于一个小区结果

D  E    K  N 
RPR NO   2000  result (K*0.3) 
NO RPR   1000  result (K*0.3) 
RPR (blank)  1000  result (K*0.5) 
RPR RPR   2000  result (K*0.5) 
NO no   2000  result 0 
No (Blank)  2000  result 0 

我已经打了许多不同的格式,并不能得到任何工作。这就是我所在的地方。我已经在这一天过了一天,真的可以使用一些援助。我不认为我需要为零提供任何东西,因为如果单元格不符合其他标准,单元格可能是空的。

Dim lrow As Long 
    lrow = Cells(Cells.Rows.Count, "D").End(xlUp).Row 

    Range("N2:N" & lrow).Formula = "=IF(D2 = ""RPR"") AndIF (F2 = ""RPR"" Or"""") 
     then N2 = (K2 * 0.5,0)" 

    Range("N2:N" & lrow).Formula = "IF D2 = ""RPR"" AndIF E2 <> ""RPR"" Then N2 = 
     (K2 * 0.3)" 

    Range("N2:N" & lrow).Formula = "IF D2 <> ""RPR"" AndIF E2 = ""RPR"" Then N2 = 
     (K2*0.3)" 

    Range("N2:N" & lrow).Value = Range("N2:N" & lrow).Value 

回答

0
sub sum() 
Dim lrow As Long 
lrow = Cells(Cells.Rows.Count, "D").End(xlUp).Row 
'\\assuming you are starting with row 1 
For r = 1 to lrow 
if range("D"& r) = "RPR" and (range("F"& r) = "RPR" or isempty(range("F"& _ 
r)) then range("N"& r) = 0.5 * range("K"& r) 
elseif range("D"& r) = "RPR" and range("F"& r) <> "RPR" then range("N"& _ 
r) = 0.3 * range("K"& r) 
elseif range("D"& r) <> "RPR" and range("E"& r) = "RPR" then range("N"& _ 
r) = 0.3 * range("K"& r) 
next r 
End Sub 
+0

谢谢但这不能说明问题的IF分量。我需要它乘以0.3倍,如果“d = RPR和E不= RPR”,也如“d不= RPR和E确实= RPR” – Jen

+0

我更新的代码中加入一对夫妇更ELSEIF的。 –

+0

我不断收到一个编译错误否则如果在第一个Elseif语句中突出显示第二个单词“范围”。我曾尝试在语句中添加(),但这并没有帮助。 – Jen

相关问题