- ベストアンサー
セルの代数により合計を変える
使用するセル、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に表示。よろしくお願いします。
- みんなの回答 (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 こんな感じでいかがでしょうか? 当方、プロのプログラマではありませんのでうさんくさいソースかもしれません。ご了承を。
その他の回答 (5)
- bin-chan
- ベストアンサー率33% (1403/4213)
セルG3に以下の式を設定。 =IF(OR(E3=0,F3=0),"",E3*F3+IF(L3="",0,IF(L3=1,500,IF(L3=2,800,0))))
お礼
ありがとうございました。これでもいいですが・・・
- chupark
- ベストアンサー率41% (90/218)
前後のながれがよくわかりませんので、主要部分だけ書いてみます。 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 いかがでしょう?自信はありませんが…。 ちなみに、私も他の方がおっしゃっているようにこの程度なら式で書くほうが早いかと思います。
補足
もう少しお願いします。E3とF3に数字が入った時に自動計算するよにお願いします。また、L3が変化した時も自動計算するようにもお願いします。
- uhyohyohyo
- ベストアンサー率27% (45/163)
えーごめんなさい。途中の +IF(L3="",0,0) なんて意味ないもの必要ないですね。カットしてくださいまし
- maruru01
- ベストアンサー率51% (1179/2272)
こんにちは。maruru01です。 マクロじゃなくて関数で、G3に、 =IF(OR(E3=0,F3=0),"",IF(L3="",E3*F3,E3*F3+(L3-1)*300+500)) じゃだめですか。 では。
お礼
ありがとうございました。これでもいいですが・・・
- uhyohyohyo
- ベストアンサー率27% (45/163)
excelの話ですよね。ifを繰り返し使えばできますよ。力技と言う感じであまり美しくはないのですが… =IF(OR(E3=0,F3=0),"",E3*F3)+IF(L3="",0,0)+IF(L3=1,500,0)+IF(L3=2,800,0) で、いちおー可能です
お礼
ありがとうございました。これでもいいですが・・・
お礼
どうもありがとうございました。うまくいきました。