2017-08-11 64 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

相關問題