• ベストアンサー

エクセルで数字をセルに入れて倍数にしたい

ちょっと分かり難いタイトルで申し訳ありません。 エクセルで、「あるセルにある数字を入力すると、その数字を倍にした数字となる」ということは可能でしょうか? 例えば、A1のセルに、「1」と入れた場合に「1」と表示するのではなく、倍の「2」として結果を返すようにしたいのです。 A1に「1」を入れて、A2で「2」と返されるのではダメです。 表のフォームが決まっているので、それを変更しないで処理したいのですが、どうにも上手い方法が見つかりません。 ユーザー定義で「0*2」(任意の数字を入れたら2を掛ける、の意図)としたのはダメでした。 よいお知恵がありましたら、お願い致します。

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

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

入力したセルをそうしたいのであれば、関数では不可能ですね。 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

onara931
質問者

お礼

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

onara931
質問者

補足

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

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

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

onara931
質問者

お礼

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

  • maron--5
  • ベストアンサー率36% (321/877)
回答No.3

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

onara931
質問者

お礼

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

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.2

>さらに複数のセルを同じように設定するにはどうしたらよいのでしょうか? 範囲の指定でいいなら 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

onara931
質問者

お礼

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

関連するQ&A