• ベストアンサー

エクセルで片方のセルに入力したら、もう片方を空白にしたい。

請求書のフォーマットを作成しています。  A(タイトル)B(数量)C(税抜価格)D(税込価格)E(合計) 1  ○○     2    1000          2100 2  ○○     2            1050  2100 3  ○○     2                  2100 1の場合ですと、Eのセルを「2100」にしようと思ったら  E=セルC*1.05*セルBになり、 2の場合ですと、Eのセルを「2100」にしようと思ったら  E=セルD*セルBになります。 そこで本題なのですが、 私は3のように、税抜価格をセルCに入力、もしくは、税込価格をセルDに入力。そのどちらを行ってもセルEに「2100」という計算結果を出したいのですが・・・ (1)そのようにする場合、セルEにはどのような数式を入れればよいのでしょうか? (2)その際に、もしセルCに「1000」を入れたら、セルDは空白に、セルDに「1050」を入れたら、セルCは空白になるようにしたいのです(例えばセルCに「1000」が入力されている状態で、セルDに「1050」を入れると、セルCの「1000」が消えるような状態)そのようにするにはどうすればよいのでしょうか? ご教授いただければ幸いです。

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

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

入力結果によって、別のセル値を消すのはVBAじゃないと出来ないと思います。 D列が入力されていればそちらを優先し、そうでない場合はC列を程度であれば E2に =IF(D2<>"",D2*B2,IF(C2<>"",(C2*B2)*1.05,0))

tyatochan6604
質問者

お礼

お礼が遅くなって申し訳ありません。 ご回答いただきましてありがとうございます。 なるほど・・・セル値を消すのは関数では無理なのですね。 >D列が入力されていればそちらを優先し、そうでない場合はC列を程度であれば E2に >=IF(D2<>"",D2*B2,IF(C2<>"",(C2*B2)*1.05,0)) IF関数を組み合わせると、似たようなことはできるのですね。 もっと私も勉強しないと・・・ ありがとうございました。

その他の回答 (1)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

関数ではセルの値を消すことはできません。 数値入力セルと、表示用セル(C列、D列)を別にすれば関数でできないこともありませんが、請求書ということであれば余分な作業用列を表示させるのは適切ではないと思います。従ってマクロでやることになります。 以下のマクロを「シート名右クリック」→「コードの表示」で開く画面に貼り付けて下さい。シート画面に戻り、C列、D列に値を入力して見て下さい。 Private Sub Worksheet_Change(ByVal Target As Range)  If Not Intersect(Target, Range("C:D")) Is Nothing Then   Application.EnableEvents = False   If Target.Column = 3 Then 'C列なら右隣セルをクリア    Target.Offset(0, 1).ClearContents   Else 'D列なら左隣セルをクリア    Target.Offset(0, -1).ClearContents   End If   Application.EnableEvents = True  End If End Sub なおこのマクロはC、D列全てが処理対象になります。もしC2:D20だけを処理対象にしたい場合は、2行目のRange("C:D")をRange("C2:D20")に変更してください。

tyatochan6604
質問者

お礼

お礼が遅くなって申し訳ありません。 ご回答いただきましてありがとうございます。 このマクロ試してみました。 すごい・・・私が思っていた通りの処理ができているので びっくりしました。 でも、やはりマクロを覚えないとこのような処理は無理なのですね^^; 今の私にとっては、マクロはまだまだレベルが高すぎるかも ありがとうございました。

関連するQ&A

専門家に質問してみよう