• ベストアンサー

Excel2000での関数

こんにちは。 Excel2000を使用しています。 Excel2000で、 仮にA1のセルに「1000」の数値が入っているとします。    A    B    C 1  1000 その時、B1に100と入力したら、A1の数値が900になるようにします。 B1に入力した数値が引かれるようにする、ということです。    A    B    C 1  900   100 この状態で、B1の数値を消しても、 A1の数値が900のままになるようにしたいのです。 そして次に、B1に200と入力したら、 A1の数値が700になるようにしたいです。    A    B    C 1  700   200 関数で、このような状態にすることは出来ますでしょうか? よろしくご回答お願い致します。

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

  • ベストアンサー
回答No.5

#3です。 仕様は最初に全部言いましょう。(汗) 乗り掛かった船ということで。 *---------------------- ここから Option Explicit Public WK As Integer Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Range("B" & Target.Row) <> WK Then Range("A" & Target.Row) = Range("A" & Target.Row) - Range("B" & Target.Row) WK = Range("B" & Target.Row) End Sub *------------------------ ここまで 30行と言わず、65,536行までOKです。 Excel2007でしたら100万行?までOKです。 B列に入る数字が、-32,768 ~ 32,767 を越える可能性があるときは、 Public WK As Integer のところを、 Public WK As Long にして下さい。

oyaoya2006
質問者

お礼

ご回答ありがとうございます。 説明不足で申し訳ありませんでした。 とりあえず、希望通りの作業ができました。

その他の回答 (4)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.4

では、B1~B30にそれぞれ入力があった場合、A1~A30を変化させる例です。 他の方の回答を使用したシート以外で試してくださいね。 Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("B1:B30")) Is Nothing Then Exit Sub Target.Offset(0, -1).Value = Target.Offset(0, -1).Value - Target.Value End Sub

oyaoya2006
質問者

お礼

ご回答有難うございました。 無事、解決しました。

回答No.3

#1さんも回答していますが、関数では出来ないですね。 関数は、自分がどうなるか、ですので、 他のセルに値を入れてあげる事はできないのです。 そこで、oyaoya2006さんの要求を実現するためには マクロしかありません。 ちょっと暇でしたので考えました。(汗) 手順。 1 新しいエクセルを立ち上げます。 2 AltとPF11を同時に押します。(VBEの画面が表示) 3 表示→プロジェクトエキスプローラ(最初から表示されているかも知れませんが、それでも良い) 4 VBAProject(Book1)の中のSheet1(Sheet1)をクリック(画面は何も変わりません) 5 右の画面に以下のソースを貼り付けます。 *-------------------- ここから Option Explicit Public WK As Integer Private Sub Worksheet_SelectionChange(ByVal Target As Range)  If Range("B1") <> WK Then Range("A1") = Range("A1") - Range("B1")  WK = Range("B1") End Sub *------------------------ ここまで これで終わりです。 右上のX印でVBEを閉じて下さい。 注意:B1に数字を入れる前に削除してから入れて下さい。

oyaoya2006
質問者

補足

有り難うございます。 上記の方法で確かに出来ます。 もうひとつご質問です。 説明不足でしたが、上記の方法を複数行にわたって 行いたいのですが、出来ますでしょうか。 具体的には、 A1~A30 → B1~B30にそれぞれ対応 のように出来るのでしょうか。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

関数ではできませんが、次の方法は如何でしょうか。 (1)ツール→マクロ→新しいマクロ記録 (2)B1をコピー→A1で形式を選択して貼り付け→減算→OK (3)ツール→マクロ→マクロ記録終了 (4)以降、B1入力→ツール→マクロ→登録マクロ実行

oyaoya2006
質問者

お礼

ご回答有難うございました。 無事、解決しました。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

>関数で、このような状態にすることは出来ますでしょうか? 関数ではできません。 理由は、 セルに入力できるのは、「値」か「式(関数)」のいずれか一つです。 そして、値以外の「式の結果」を残すことはできません。

oyaoya2006
質問者

お礼

ご回答有難うございました。 無事、解決しました。

関連するQ&A

  • Excel2010 関数について

    Excel2010を使用してます。 1行の中にアルファベットを入力するセルと数値を入力するセルが交互に並んでいます。 その中で、例えばAと入力されたセルの左隣のセルの数値の合計を出したい場合、どのような数式を使用すればいいのでしょうか。 自分なりに調べてみましたが、Aと入力されたセルの左隣のセルという指定の仕方がわかりませんでした。アルファベットと数値のセルは交互に並び全部で60列ぐらいあるので、その中でAと入力されたセルの左の数値の合計を出したいのですが、どなたか教えてください。      A  B  C  D   E  ・・・   1 1 A 3 A 1 B 2 C 1 A ・・・   2 2 B 1 A 3 A 1 C 1 B ・・・   ・   ・   ・ というような表になっています。 数値とアルファベットはそれぞれ1つずつのセルに入力されています。 よろしくお願いします。

  • Excel関数について・・・

    次のような場合、関数を用いて効率よく処理を行うにはどのような敷を用いればよいか、どなたかご教授お願いできませんでしょうか?よろしくお願い致します。 セルA1にある商品の単価が入っており セルB1にはその商品の販売台数が入力されています。 その状態がセルA1~B10まで続いていたとします。 その下セルA11とセルB11を結合したセルに 上記のセルA1~B10までの集計を求めたく思います。 この場合、セルA1とセルB2の値を掛けたものを セルC1に一度出してから、セルC1~C10の合計値を出す などと言った方法はとらずに、いきなり直接結合セルに 結果を出すにはどのような方法を用いればよいですか? 出来るだけ簡潔な方法をご教授いただけるとありがたく思います。 分かりにくい質問内容で大変申し訳ございませんが 何卒よろしくお願い申し上げます。

  • エクセル関数について

    エクセル関数について質問です。 簡単に説明すると特定のセルに特定の数値を入力するとその行の別のセルの数値を別のセルに表示させたい。 たとえば     A      B       C 1  100            2  200      1      100 3  300      1      300 4  400 5  合計            400 上記の様になっていた場合 A列は定数で固定です。B列のセルに1と入力(1でなくてもよい)した行のA列の数値を Cに表示したいのですが、 C列にどの様な関数を使ったらいいんでしょうか?宜しくお願い致します。

  • エクセル IF関数が入った条件付き書式について

    エクセルにおいて、セルA1、B1、C1があるとします。A1、B1には数値が何も入力されていない状態で、C1に計算式「=SUM(A1)/B1」が入っているとします。このままでは、C1は、「#DIV/0!」と表示されます。 この表示を消すために、C1にIF、ISERROR関数を使い、「=IF(ISERROR(SUM(A1)/B1),"",SUM(A1)/B1)」の計算式を入力します。 このままでもいいのですが、C1の値が「10以上」になった時に、C1のセルに色を付けたいのです。 書式→条件付き書式→セルの値が→次の値以上→10 にすると、セルに何も値が入っていない(空白)状態で色だけが付いてしまいます。 色々調べると、IF関数の""の空白が文字列のため、数値より大きいとみなされている事が原因っていうことは、分かりましたが、色々試してみても出来ません。何かいい方法はございますでしょうか? ご教授お願いします。

  • Excelの関数について

    Excelの関数について 今表を作っていて 1日数回データを取って それを1ヶ月ぐらい続ける予定で その結果をExcelの表に入力したいと思っています。 A列に現在値 B列に増加分 C列にA+Bの値を入れたいと思っています。 なので、C列には、C1には=SUM(A1,B1)として セルの右下にポインタを合わせて十字で下まで引っ張って関数をコピーしています。 で、そうするとC列に0が表示されてしまい それはなんとか、ツール→オプション→表示→ゼロ値のチェックを外して解決したのですが C列の合計値は次の行のAのセルに表示したくて 例えば C3の数値はそのままA4に C7の数値はそのままA8にといった感じで で、A2のセルに=C1とかA5のセルに=C4とかしたのですが いちいち関数を埋め込むのは面倒くさいので 下のほうまで関数をコピーしたところ 関数が埋め込まれているので A列とB列にしたの方まで同じ数字が表示されています。 これって消すことはできないのでしょうか? 現在は 最初のA1セルだけに数値を入れたのですが関数を埋め込んだことにより A列とB列すべてにA1セルの数値が表示されています。 まだデータを取っていないのでB列は空白です。 ただ、できれば、下の方に数値が表示されないようにしたいんです。 言葉で説明すると A列とB列に数値が入力されない限り、C列の合計値は表示されない設定にできれば 私の言っているような状況になると思うのですが、そういう事はできないのでしょうか… 教えてください。

  • ISBLANK関数を二段階まで設定するには?

    初めまして。 途中までは出来ているのですが、どうしても分からない関数があった為、質問させて頂きます。 <分かっている設定方法> (1) A1のセルに、B1に入力された数値を反映させる。 (2) C1にも数値が入力されたら、A1のセルにC1の方を優先的に反映させる。 関数 =IF(ISBLANK(C1),B1,C1) ここまでは出来るんです。しかし、さらに次のような設定にしようとすると、どうしても上手く行きません。 <やり方が分からない設定方法> (3)さらにD1に数値が入力されたら、A1のセルにD1の方を優先的に反映させる。 すなわち、A1に反映される優先順位を D1>C1>B1 にする。 色々やっているのですが、どうしても、この関数が上手く書けません。 どのような関数を書けば良いのでしょうか? ちなみに、Excelは2000年バージョンを使っています。

  • Excel 関数について

    Excelの関数で例えば、セルのC1にA1とB1の合計を表示させたければ、C1のセルに「=A1+B1」と入力すれば表示できますよね。 そこで質問なのですが、C1のセルに「=A1+B1」と入力したとして、A1とB1に数値を入力していない場合にC1には0と表示されます。その0を表示させたくない場合にはどのような作業をすればよいのでしょうか? 教えてください!(^^)!お願いします!!

  • エクセル 2003 関数

    エクセル 2003 関数 お世話様です。 XPのエクセル2003にてセルA1に数値の3を入れております。 これをセルC5の文字間に関数値として挿入する事は可能でしょうか? 例: セルA1に数字の3、セルC5に【カウントです。】と入力されていたら    【カウント3です。】となります。 セルA1の数値によってセルC5の入力内容が変わるようにしたいのですが 可能でしょうか? お手数ですが、ご存知の方がいましたらご教授下さい。 以上、何卒宜しくお願い致します。

  • エクセルの関数について

    以下のようなことを実現できるエクセルの関数を教えてください。 <状況> ・ひとつのセルに、複数の数字が「,」区切りで入力されている。  (仮にA1セルとします) ・B1セルに検索値が入っています。 <実現したいこと> B1の値が、A1に含まれるとき、C1に”○”を返す。 このときのC1に入力すべき関数を教えてください。 <具体例> A1:12,13,14 B1:12 C1:○

  • EXCEL関数での質問です。

    こんにちは。 うまく説明できませんので、以下具体的に表現します。 A1セルに「ABC」という文字が入力されているとします。 文字に色をつけました。 A-赤、B-青、C-黒というように.. (1つのセル内に3色あります) そして、B1セルに関数で「=A1」と入力し、「ABC」と表示されました。 ここからが質問です。 B1の値である「ABC」も3色で表現したいのですけれど、可能ですか? 教えて下さい、よろしくお願いします。 EXCEL2000使用です。

専門家に質問してみよう