• ベストアンサー

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