2017-08-11 5 views
0

条件を満たす場合に式をセルに適用しようとしています。マクロは最初にシートを検索してすべてを検索し、イニシャルがDからGの列に表示される場合はすべての行を保持します。マクロではイニシャルRPRを探しています(他のイニシャルはNOになります)。 DでRPRが見つかるがEではない場合、計算はK * 0.3でなければならない。そうでない場合は、私は第二のシナリオなどを探して進んでいく必要があります。私はテーブルのイメージを添付しました。私が下に投稿したものが正しく表示されるかどうかわかりません。 table of dataExcel VBA複数の場合、1つのセルの結果が計算されます

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 

私は多くの異なるフォーマットでプレイしており、動作することはできません。これは私がいる場所です。私はこれを1日以上行っており、実際にはいくつかの援助を利用することができます。私は他の基準を満たしていなければ、セルが空になることがあるので、ゼロのために何かを持つ必要はないと思う。

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要素を考慮しています。 "D = RPRでE = RPRでない"と "D = RPRでなくE = RPRである"の場合は、時間が0.3倍になるようにする必要があります。 – Jen

+0

もう1つのelseifを追加してコードを更新しました。 –

+0

私はコンパイルエラーを受け取りますが、Ifを指定しない場合、最初のElseif文で2番目の単語 "range"が強調表示されます。私は文のまわりに()を追加しようとしましたが、それは助けになりませんでした。 – Jen

関連する問題