[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『表に数値の増減が反映されるようにするには?』(あっぷ)
A、B、Cという事項に対し、それぞれX,Y,Zという数値があらかじめ与えられているとします。
(2×3の6個のセルから成る表(表1とします。)があるとします。)
別の表に、AからCまでをランダムに入れて行き、それぞれに対して適宜の数値を入れていくとします。この場合に、例えば『A 1000』と入れると、表1のAの数値が『X-1000』と反映され、次に『C 500』と入れると表1のCの数値が『Z-500』と反映され、次に『A 300』と入れると、表1のAの数値が『A-1000-300』と反映され、次に『B -700』と入れると、表1のBの数値が『B+700』と反映され、…というように繰り返されるような設定にしたいのですが、どうすればできるのでしょう?
ご教示願えれば幸いです。
< 使用 Excel:Excel2013、使用 OS:unknown >
入力値を一度だけ処理するということは通常の式では困難なので、マクロの例です。
いろいろと運用上の問題はありそうですが、とりあえずのサンプルです。 A1:B3 が表だとして、D1 に入力、E1:H1 に確認のための処理結果を表示して 処理後 D1はクリアしています。 シートモジュール(シートタブで右クリックでコードの表示)においてください。
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$D$1" Then Exit Sub Dim calcCell As Range Select Case Left(Target.Value, 1) Case "A": Set calcCell = Range("B1") Case "B": Set calcCell = Range("B2") Case "C": Set calcCell = Range("B3") Case Else: Exit Sub End Select
Application.EnableEvents = False Range("E1").Value = Target.Value Range("F1").Value = calcCell.Value Range("G1").Value = "⇒" calcCell.Value = calcCell.Value - CDbl(Trim(Mid(Target.Value, 2))) Target.ClearContents Range("H1").Value = calcCell.Value Application.EnableEvents = True End Sub
(Mook) 2014/08/28(木) 14:13
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.