プロが教える店舗&オフィスのセキュリティ対策術

ちょっと分かり難いタイトルで申し訳ありません。

エクセルで、「あるセルにある数字を入力すると、その数字を倍にした数字となる」ということは可能でしょうか?

例えば、A1のセルに、「1」と入れた場合に「1」と表示するのではなく、倍の「2」として結果を返すようにしたいのです。
A1に「1」を入れて、A2で「2」と返されるのではダメです。

表のフォームが決まっているので、それを変更しないで処理したいのですが、どうにも上手い方法が見つかりません。

ユーザー定義で「0*2」(任意の数字を入れたら2を掛ける、の意図)としたのはダメでした。

よいお知恵がありましたら、お願い致します。

A 回答 (4件)

入力したセルをそうしたいのであれば、関数では不可能ですね。


VBAでやってみました。簡単ですので以下の手順を試してみてください。

1.シートのタブを右クリックし、「コードの表示」を選択。
2.出てきたVisualBasicEditor(白い部分)に下記のコードをコピペ。

'*****ここから下をコピペ*****

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$A$1" Then Exit Sub
If Selection.Count > 1 Then Exit Sub
Application.EnableEvents = False
On Error GoTo line
If IsNumeric(Target.Value) Then Target.Value = Target.Value * 2
line:
Application.EnableEvents = True
End Sub

'*****ここより上までをコピペ*****

3.Alt+F11キーでワークシートへもどります。

さあ、A1に数字を入れてみてください。( ̄ー ̄)v

この回答への補足

さらに複数のセルを同じように設定するにはどうしたらよいのでしょうか?
2行目のセル指定をコロンなどで$A$10と繋いでみたのですが、うまく行きませんでした。

補足日時:2006/12/01 14:19
    • good
    • 0
この回答へのお礼

ありがとうございました!出来ました!
VBAは敬遠していたのですが、これを機会に勉強し直してみたいです。

お礼日時:2006/12/01 14:16

これはエクセル関数では絶対できません。


セルの値を使って演算して、元のセルに戻すと式が壊れますので、どうしてよいかわからなくなるのです。
一旦別変数に退避して、その数を使って演算し、セルにセットできるVBAなら簡単です。
ただデータが変化したときを捉えて、演算をする必要があるので、イベントという仕組みを(Changeイベント)を使わざるを得ません。
エクセル関数の2+1大原則
(1)セルの値を使い関数演算して戻すことはできません
(2)関数は、値しか処理できません(値?値以外に、どんなものが
あるか関心を持ったことがありますか。
(3)エクセルの日付・時刻は日付シリアル数、24時間を1とする数である。
    • good
    • 0
この回答へのお礼

そうですね。関数では出来ません。レクチャーどうも多謝です。

お礼日時:2006/12/27 17:26

◆表示形式による方法です


入力した数字の2倍が表示される方法です
1)表示形式を「ユーザー定義」で、 #/2 とする
2)/2の前を指定して、、 Ctrl を押しながら、J を押す
3)[配置]の「折り返して全体を表示」にチェック
注)入力数字が4~5桁になると、###### になるケースがあります
    • good
    • 1
この回答へのお礼

ありがとうございました。
ですが表示で2倍になっても実態が違うので計算には使えませんでした。
残念でしたが。

お礼日時:2006/12/27 17:24

>さらに複数のセルを同じように設定するにはどうしたらよいのでしょうか?


範囲の指定でいいなら
A1とA10
If Target.Address <> "$A$1" And Target.Address <> "$A$10" Then Exit Sub
-処理-

A列全部
If Target.Column <> 1 then Exit Sub
-処理-

A1:A10の範囲
If Target.Column = 1 then
If Target.Row >= 1 And Target.Row <=10 then
-処理-
End If
End If

If以外で判定なら
Select Case Target.Address
Case "$A$1","$A$10"
-処理-
End Select
    • good
    • 1
この回答へのお礼

ありがとうございました。

お礼日時:2006/12/27 17:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています