• ベストアンサー

セルの代数により合計を変える

使用するセル、E3,F3,G3,L3です。G3に=if(or(E3=0,F3=0),"",E3*F3)と入力する。L3が無表示ならばG3はE3*F3、L3が1ならばG3はE3*F3+500、L3が2ならばG3はE3*F3+800となるようにマクロでかくにはどのように書けばいいのですか。例、E3に100、F3に10の時L3が無表示ならばG3は1000、L3が1ならばG3に1500、L3が2ならば1800とG3に表示。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • chupark
  • ベストアンサー率41% (90/218)
回答No.6

>もう少しお願いします。E3とF3に数字が入った時に自動計算するよにお願いします。また、L3が変化した時も自動計算するようにもお願いします。  自動計算をお好みでしたら、やはり他の皆さんがおっしゃっているように式を使って書くのが簡単であり、普通かと思います。 ですが、マクロを使う方法も考えてみましたので参考にどうぞ。  E3,F3,L3が更新されると式を実行するようにしてみました。 Private Sub Worksheet_Change(ByVal Target As Range) If (Target.Address = "$E$3") Or (Target.Address = "$F$3") Or (Target.Address = "$L$3") Then Call Keisan End If End Sub  sub Keisan if (Range("E3").value = 0) and (Range("F3").value=0) then  Range("G3").value = "" else  select case Range("L3").value  case ""  Range("G3").value = Range("E3").value * Range("F3").value  case 1  Range("G3").value = Range("E3").value * Range("F3").value + 500  case 2  Range("G3").value = Range("E3").value * Range("F3").value + 800  end select end if end sub  こんな感じでいかがでしょうか?  当方、プロのプログラマではありませんのでうさんくさいソースかもしれません。ご了承を。

kkazumi
質問者

お礼

どうもありがとうございました。うまくいきました。

その他の回答 (5)

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.5

セルG3に以下の式を設定。 =IF(OR(E3=0,F3=0),"",E3*F3+IF(L3="",0,IF(L3=1,500,IF(L3=2,800,0))))

kkazumi
質問者

お礼

ありがとうございました。これでもいいですが・・・

  • chupark
  • ベストアンサー率41% (90/218)
回答No.4

前後のながれがよくわかりませんので、主要部分だけ書いてみます。   IF (Range("E3").value = 0) And (Range("F3").value=0) THEN Range("G3").value = "" ELSE SELECT CASE Range("L3").value CASE "" Range("G3").value = Range("E3").value * Range("F3").value CASE 1 Range("G3").value = Range("E3").value * Range("F3").value + 500 CASE 2 Range("G3").value = Range("E3").value * Range("F3").value + 800 END SELECT END IF  いかがでしょう?自信はありませんが…。    ちなみに、私も他の方がおっしゃっているようにこの程度なら式で書くほうが早いかと思います。

kkazumi
質問者

補足

もう少しお願いします。E3とF3に数字が入った時に自動計算するよにお願いします。また、L3が変化した時も自動計算するようにもお願いします。

回答No.3

えーごめんなさい。途中の +IF(L3="",0,0) なんて意味ないもの必要ないですね。カットしてくださいまし

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

こんにちは。maruru01です。 マクロじゃなくて関数で、G3に、 =IF(OR(E3=0,F3=0),"",IF(L3="",E3*F3,E3*F3+(L3-1)*300+500)) じゃだめですか。 では。

kkazumi
質問者

お礼

ありがとうございました。これでもいいですが・・・

回答No.1

excelの話ですよね。ifを繰り返し使えばできますよ。力技と言う感じであまり美しくはないのですが… =IF(OR(E3=0,F3=0),"",E3*F3)+IF(L3="",0,0)+IF(L3=1,500,0)+IF(L3=2,800,0) で、いちおー可能です

kkazumi
質問者

お礼

ありがとうございました。これでもいいですが・・・