[[20041020105248]] 『同一セル内での計算と内訳表示』(tasuketeman) >>BOT

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『同一セル内での計算と内訳表示』(tasuketeman)

いつもお世話様です。また教えてください。
例えば果物の数の合計を出すときはりんご10個、バナナ5本と言う資料を見て電卓で足し算をして、合計15という数字を出し、セルに15を入力し、内訳は別途資料にまとめておりました。
これを
10プラス5と言う計算を直接セル内で行いたい
 例えばあるセルに10を入力し、エンターを押し続いて5を入力するなどして、答えの15が直接セルに表示されるようにしたいのです。またなんらかの操作をすると10とか5の内訳数字も見れるようにしたいのですがよろしくお願いします。


 セル内で
+10+5
と入力します。
(みやほりん)


 ついでなので、類似(入力した数値を同じセルに別の値にして返す)の
ログを調べてみました。まだあるかもしれませんが。
[[20040928092709]] 『セル内の自動計算』(MARU) 
[[20040909143826]] 『同一セル内での累積の計算』(匿名) 
[[20040824140317]] 『セルに数字を何度も入れ合計出来る方法を』(じゅじゅ) 
[[20040716165711]] 『セルに数字を入力すると、税込表示に・・・』(キリキ) 
[[20040716102605]] 『かけ算に関して』(ナミ) 
[[20040712144236]] 『数値の累積』(ガクセイサン☆) 
[[20040609110342]] 『同一セルで定価の80%を自動計算』(ひろりみ)
[[20040612114856]] 『セルの中で計算』(のぞみ) 
[[20040131111956]] 『セル内の和』(mutsu) 
[[20031126105334]] 『別に加算合計を出したい』(じゃじゃ子) 
[[20031012162017]] 『毎回同一セルに数字を入力して加算できるように』(事務) 
[[20020530145644]] 『電卓みたいな計算できますか?』(事務員です) 
(みやほりん)


ありがとうございます。よく読んで試してみます。


試して見ました。上記の過去ログの内、上から3番目のじゅじゅさんへの回答の

 A1 に入力 B1 に表示の場合。

 Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count <> 1 Then Exit Sub
    If Target.Address <> Range("A1").Address Then Exit Sub

    Range("B1").Value = Range("B1").Value + Target.Value
    Target.Select
 End Sub

が大変役に立ちました。ところでこの場合、何とかA1に何と何と何・・を足したのかその経緯がわかるようにする方法を教えてください。
例えば1と2と3をA1に入力してB1に答えの6が表示されたとします。
何らかの操作をして、A1内(別にどこにでもよいのですが)に1と2と3を足したという経緯を表示させたいのですが教えてください。


 Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count <> 1 Then Exit Sub
    If Target.Address <> Range("A1").Address Then Exit Sub

    Range("B1").Value = Range("B1").Value + Target.Value
 
    Select Case WorksheetFunction.CountA(Range("C:C"))
        Case Is = 0
            Range("C1") = Target.Value
        Case Is > 0
            Range("C65536").End(xlUp).Offset(1, 0).Value = Target.Value
    End Select
 
    Target.Select
 End Sub
 
Select Case 〜 End Select が追加部分。
C列に入力履歴を残す例です。
他の列に残す場合は
Range("C:C")
Range("C1")
Range("C65536")
を任意の列番号を任意のものに書き換えてご使用ください。
(みやほりん)


ありがとうございました。ばっちりです。

もう一つ教えて下さい。
上記プログラムを使って、例えばA1欄に2+3+5−4と打ち込むと、B1に答えの
ー4が表示され、C列には、2,3,5、−4の内訳数字が表示されます。
この場合、計算途中などで3は2が正しく、ー4はー3が正しかったと気づいた場合、A1欄で計算し直すのでなく、たとえばC列の該当数字にカーソルを合わせ正しい数字(この場合は2と−3をそれぞれ該当誤数字に上打ちすると、自働的にB1に正しい結果数字(この場合は6)が表示されるようにしたいのですが、どうしたらよいのかご教示下さい。よろしくお願いします。

 C列に履歴を残し、なおかつ、C列の修正で合計値を
変更できるようにするのが希望であれば、
最初からC列へ計算したい数値を入力していって、
B1へSUM(C:C)などとしておけばよいのではありませんか?
入力するセルを一つに固定しようとされる方の意図が
(過去ログも含めて)私には理解しきれません。
一応、以下のように修正すればご希望には添います。
 
 Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count <> 1 Then Exit Sub
    If Target.Address = Range("A1").Address Then

        Range("B1").Value = Range("B1").Value + Target.Value

        Select Case WorksheetFunction.CountA(Range("C:C"))
            Case Is = 0
                Range("C1") = Target.Value
            Case Is > 0
                Range("C65536").End(xlUp).Offset(1, 0).Value = Target.Value
        End Select

        Target.Select

    ElseIf Target.Column = 3 Then

        Range("B1").Value = WorksheetFunction.Sum(Range("C:C"))
        Target.Select

    End If
 End Sub
 
(みやほりん)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.