• ベストアンサー

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

請求書のフォーマットを作成しています。  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

  • 数式が入った空白のセルを合計するとき

    数式が入った空白のセルを合計するとき WINDOWS XP EXCELL 2003 です。 各セルの数式は C43 =SUM(B36-C36) D36 =SUMPRODUCT((入力!$C$2:$C$50=$A36)*(入力!$A$2:$A$50=D$1),入力!$E$2:$E$50) E36 =SUMPRODUCT((入力!$D$2:$D$50=$A36)*(入力!$A$2:$A$50=D$1),入力!$F$2:$F$50) E43 =SUM(C43+D36-E36) と数式がそれぞれに入っています。 ご教示を仰ぎたいのは D36,E36 に値がない空白のセルですがこの場合、E43 G43 I43 と表示(この場合 50,000)がされますがD36 若しくはE36に値が表示されたときのみにE43 を表示したいのですが可能でしょうか。 目的は見やすくしたいのですが。 ご指導いたたければ幸甚の至りです。

  • エクセルで空白セルを寄せたい

    エクセル2002使用です VBAは使わずに関数だけで空白セルがあるセルを詰めて表示したいのですが・・・   A|B|C|D|E|F|G 1 あ い う え お か き 2 ○   ○ ○   ○ の表を   A|B|C|D|E|F|G 1 あ う え か  2 ○ ○ ○ ○ のように表を書き換えたいのです。 1行目には必ず文字が入力されています。 2行目には入力されているセルと空白セルが不定期に入力されています。 2行目のセルが空白ならば、1行目のセルも削除して左へ詰めて 表を転記したいのです。 よろしくお願いします。

  • EXCEL 数式が入った空白セルを数える

    毎度お世話になっています。 質問の内容ですが、例えば下記のようなシートがあるとします。 セルB1、セルC1、セルD1:手入力セル セルA1:数式「=IF(B1="","",B1+C1)」 セルA2:文字列 セルA3:数式「=IF(D1="","",D1*0.1)」 セルA4:文字列 セルA5:A1+A3の計算結果を表示 (※なお、セルA2、A4は数値が入らない) というような場合において、 ●セルB1、C1、D1になにも入力されていない場合、セルA5が空白となる。 ●セルB1、C1にのみ数値が入力されている場合、セルA5の計算結果がセルA1の値のみ。 ●セルD1にのみ数値が入力されている場合も上記と同様に計算結果が表示される。 以上の条件を満たす数式をセルA5に入力したいのですが、 COUNTBLANKは数式が入っている場合には使えず、COUNTAの場合だとセルA1、A3のどちらにも数値が入った場合に表示される、といった数式になります。 IFをいくつも使えば可能とは思いますが、もう少し単純に数式を作れたらと思い質問をさせて頂きました。 よろしければ御回答宜しくお願い致します。 (内容を訂正したため、いったん質問を削除しました。もし御回答中の方が居ましたら申し訳ありませんでした。)

  • Excel 空白の場合、空白にする

    Eセルに =A2&C2&B2&D2 で入力します。 結果は「()」と表示してしまいます。 A2セルが空白の場合、Eセルも空白にしたいです。

  • 数式で空白にしたセルについて

    もともと空白だったセルD1とE1があって、F1に「=D1*E1」と 数式を立てるとF1には0が表示されます。 しかし、D1に例えば「=IF(B1="","",VLOOKUP(B1,$G$1:$N$5,2,FALSE))」 という数式を入れD1を空白にすると「=D1*E1」の数式があるF1には #VALUE!のエラーがでます。 D1に返された""は、通常の空白という意味とは違うのでしょうか? また、通常の空白セルとは0(ゼロ)が設定されているのでしょうか? ご存知の方教えて頂けますでしょうか

  • エクセルVBAで関数が入った空白セルの取得

    エクセルVBAで下記のようなセルの参照をしたいのですが、よろしくお願いします。(エクセル2002です)   A  B  C  D  E  F 1 78 80 セル(A1)(B1)には値も関数も入れられています。 セル(C1)(D1)(E1)には値は入っていませんが、ワークシート関数が組み込まれており空白となっています。(関数の""にて空白) セル(F1)には何も入力されていません。 今回はセル(B1)の80の値を取得できるようにVBAで下記のようにコードを組みました。 Range("F1").End(elToLeft).Activate そうすると、セル(E1)に関数があるために(?)(E1)がアクティブな状態となります。 関数が入力されていても空白として(B1)をアクティブな状態にするために良い方法はありますでしょうか? 誠に申し訳ございませんが、よろしくお願いします。

  • EXCELで式での空白セルの挿入方法

    A列は空白行で、B列は数値が入っていたり空白だったりする行で構成されています。 またC列からD列までの全ての行には数値が入っています。 この時A列に条件付き数式を入力して、B列が空白でなければB列に空白セルを挿入して現B列からD列を右にシフトさせたいのですが、数式で可能でしょうか? 数式で可能ならばA列に入力する式を、不可能なら参考のためVBAでの記述をお教え頂けると嬉しいです。(VBAはあまり理解しておりませんが。) 例 【処理前】 A列 B列 C列 D列 E列     22   33  44          55  66     77   88  99         100  101 【処理後】 A列 B列 C列 D列 E列 式       22  33  44 式       55  66 式       77  88  99 式      100  101 2万行の処理を1回のみしたいです。 宜しくお願いします。

  • エクセルにて空白セル~合計セルに小計を差し込むには?

     仕事で下記のような横に長い一覧シートを使用しております。日によって列数の変動が大きく、列数が増えると印刷設定を変えてページ数を少なくしています。表が見にくくて申し訳ないのですが、数値0のセルは実際は空白です。  標準では下記形式のままで、合計及び各セルには数値データーが入っていますが、数式は入力されておりません。     A  B  C  D  E  F ~   BG   道具 型A 型B  型C 型D 型E 合計  1 畳  19  0   0  11  8~    156  2ドア  32 12    0  0  11~   93   3 鏡  0  25   18  0  0~    67  4建具 34  26   34  0  0 ~   112  5台所  8  0    0   20 6 ~   58  6座卓  0  0    43  22 0 ~   219  7 襖  30 23   25  30  0~    186  8欄間  4  32   0   0  24~    93  9照明  0  14   8   0  0 ~    72 10風呂  7  6    0   0  45~    95  横長の時、0の空白セルに連続する各データーセルをCTRLキーを押しながら、Σで小計を手動で出しているのですが、手作業では追い付きません。  B列を基点として、各行の連続しているデーターセルを0の空白セルの所に小計を簡単に出すにはどうすればよいでしょうか?  簡単に言いますと『B2>0かつC2>0でE2=0あればB2+C2を行う、E2>0ならB2+C2+E2を行う』次に空白0セルがあれば、それまでの小計を表示する、と言うようにしたいのですが、教えていただけないでしょうか?簡単に式をコピーできると言いのですが、  

  • Excelセル数式入力

    添付の見積書のうちセルE2の合計がH2の数値と同じもしくは近似値:±10,000になるようにセルD5とD9に数式を入力したいのですが。E列の数式をF列に表示しています。条件がありましてF1の値は都度手入力で変更されます、また見積書の諸経費はI2が空白であれば数値が入りI2に数字1を手入力すれば数値が入らず加算されないようになります。尚、D5+D9を100%とした場合セルD5はJ2の割合、D9は(100%-J2%)になるようにしたいのですが数式を何度か入れたのですが数値がちぐはぐ又、循環になりなりうまくいきません。D5,D9に入力する数式をどうかよろしくお願いします。

  • Excelセル値入力

    セルC2の合計がF1の数値と同じになるようにセルB4に数式を入力したいのですが。C列の数式はD列に表示しています。尚、F1の値は都度手入力で変更されます。数式を何度か入れたのですが数値がちぐはぐ又、循環になりなりうまくいきません。B4に入力する数式をどうかよろしくお願いします。

専門家に質問してみよう