[[20171206102943]] 『「電卓みたいな計算できますか?」[事務員です] 』(くらげ) >>BOT

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

 

『「電卓みたいな計算できますか?」[事務員です] について』(くらげ)

投稿
[[20020530145644]] 『電卓みたいな計算できますか?』(事務員です) 
について...
この機能を列全体に繁栄させることは出来ますか?
たとえば、A列1-30に入力した数値の累計値をE列1-30に入れる
といったような
いろいろ試したのですが出来なかったのでお願いします。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


Private Sub Worksheet_Change(ByVal Target As Range)
    Dim r As Range
    If Target.Column <> 1 Then Exit Sub
    Set r = Target
    Target.Offset(, 5).Value = Val(Target.Offset(, 5).Value) + Target.Value
    Application.EnableEvents = False
    Target.Value = ""
    r.Select
    Application.EnableEvents = True
End Sub
(mm) 2017/12/06(水) 11:04

具体的に、セルにはどういう値(文字列)が入力されている場合に、どういう結果になって欲しいのですか? リンク元では、足し算だけなら1セルではなく、値の分だけセルを分けておいて SUM関数で良いのでは?、という解決案になっているようですが。 いろいろ試した、というその内容を具体的に書いてもらえば、何がしたいのかの手がかりになるのですが。

もし、A1セルに"3+4+5" のように数式が入力されていて(だったら頭に"="を追加するだけで計算されるでしょ?、と思いますが)、E1セルが"12"になって欲しいという事ならば、標準モジュールに以下のコードを貼ってから、E1セルは「=fCALC(A1)」としてください。

 Function fCALC(cw As String)
    fCALC = Evaluate(cw)
 End Function
(???) 2017/12/06(水) 11:05

 ちょっと制限ありだが。
 まず、Excelのオプションの数式-計算方法の設定で「反復計算を行う」にチェックを入れ、最大反復回数を1としてくれ。
 それからE1セルに
 =IF(CELL("address")=ADDRESS(ROW(A1),COLUMN(A1)),IF(A1="","",N(E1)+A1),E1)
 と入力して下へフィルコピーしてみてくれ。

(ねむねむ) 2017/12/06(水) 11:30


 これでA列に数値を入力するたびに対応するE列に数値が足されていく。
 なお、A列のセルをクリアするとE列のセルもクリアされる。
 ただし、A列にカーソルを置いたまま保存すると次に開いた際にそのA列のセルに対応するE列のその時のA列の値が足されてしまう。
(ねむねむ) 2017/12/06(水) 11:32

コメント返信:

[ 一覧(最新更新順) ]


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