プロが教えるわが家の防犯対策術!

エクセル縦列の足し算を
たとてばGだと
=SUM(G1:G1000)
のように1000と大目の数字でいれておき

下まで行き合計を確認してるのですが(>_<)
入力するたび自動にできませんか

たとえば80件入力時は81件目に合計がでる
次に25件入力→126件目に合計がでる
のように最初に設定すれば、
自動でできる方法はありませんか?
(その都度数式を変える以外で)

A 回答 (13件中1~10件)

#06、#11です


昨日upしたマクロは合計行を入れる列がG列固定になっていました。最初のCONSTで設定した列に合計行を入れるように修正しましたので、こちらのマクロをご使用下さい。動作は確認しました

Private Sub Worksheet_Change(ByVal Target As Range)
Dim LastRow, StartRow As Long
Const RETSU As Long = 7 'G列はA列から数えて7列目。列を変えるときはここを修正
On Error Resume Next
Application.ScreenUpdating = False
Application.EnableEvents = False
If Target.Column = RETSU Then
With Range(Cells(1, RETSU), Cells(65536, RETSU))
.Font.ColorIndex = 0
.SpecialCells(xlCellTypeFormulas, 23).ClearContents
StartRow = .SpecialCells(xlCellTypeConstants, 1).Cells(1, 1).Row
End With
LastRow = Cells(65536, RETSU).End(xlUp).Row
With Cells(LastRow + 1, RETSU)
.FormulaR1C1 = "=SUM(R" & StartRow & "C" & RETSU & ":R" & LastRow & "C" & RETSU & ")"
.Font.ColorIndex = 5 '青色
End With
End If
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub

Sub イベント復活()
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
    • good
    • 0
この回答へのお礼

有難う御座いますm(__)m

06-07-04 01:40

無事解決しました。

みなさまに幸あれです(^_^)

お礼日時:2006/07/04 01:40

>印刷を余白最低にしてもスペースの関係で横列は増やせないので



印刷は関係ありません。
入力中に途中経過の合計がわかればよいのでしょう。
印刷範囲外の空いたセルに合計を表示させます。
あなたがどんな表を作っているのか、こちらではわかりませんので、
「空いたセル、たとえばH1セルに」と記しました。画面上の邪魔にならない空いたセル(画面に表示されている部分と印刷できる範囲とは違います。印刷範囲外でも、画面に出ているセルなら、仮に表示できるでしょう)に式を設定します。
印刷したい部分を範囲指定して、「ファイル」-「印刷範囲」とすれば、印刷する部分を指定できます。

質問では、G1からG1000までの合計を求めていますので、タイトル行を作っていないように思われます。
何の項目か判るように、タイトル行を入れておいたほうが、作成中も後々も便利だと思います。
前にも説明したように、タイトル行を作って、ウィンドウ枠を固定しておけば、常に表示されます。
なお、この場合データはG2からですので
=SUM($G$2:$1000)
という式になります。

この回答への補足

あーーーーみなさんすみません(>_<)

こんなにたくさん、ありがたいのですが・・・

印刷は毎日するので最後に合計を印刷したいので。
ページが増えるのは構わないのですが、
まとめて最後に印刷したいのです。
(別にすると書類として幼稚だそうで・・・)

表としては解決できそうですがm(__)m

この手は疎いですし
私は、やはり勉強不足ですので今後勉強しますが、

なんとか今も試してます。

手書きで最後に書け!とかいわれないかひやひやしてます(>_<)

皆様の知識には敬服します。

補足日時:2006/07/03 00:14
    • good
    • 0
この回答へのお礼

06-07-03 02:07

すみません、難しく、なかなかうまくいかず、
そろそろ限界なので寝ます。
勉強しながら、今後作り直します。

お時間を下さい(>_<)

お礼日時:2006/07/03 02:08

#06です


お仕事ごくろうさまでした

マクロは入力するシートを開いた状態でAlt+F11(VBE画面が開く)→F7(コード入力画面が開く)→そこにペースト

です。「すごいことになった」とはどういうことでしょうか。現象が分かれば再度回答いたします
    • good
    • 0

入力を別にしてはいかがでしょうか?


印刷できない場所にしては?
例えばJ列とかにして
印刷したい列の最初の行に
=IF(COUNTA(J$1:J$1000)+1=ROW(J1),SUM(J$1:J1),IF(J1="","",J1))
下にコピー
エクセルがないので確認できてませんが・・・
    • good
    • 0
この回答へのお礼

有難う御座いますm(__)m

06-07-04 01:40

無事解決しました。

みなさまに幸あれです(^_^)

お礼日時:2006/07/04 01:39

こんばんは。



例えば、G1 ~G79 までデータ(文字または数値)があるとして、完全な空白値(Empty)がないとすれば、

G80は、
=IF(SUBTOTAL(3,$G$1:G79)<>ROW(A79),"",SUM($G$1:G79))

このような式にしておいて、この式を、必要範囲まで、ずっと下まで入れておきます。

次に、G80に、数式のある場所に上書きで数字を入れれば、その直下に合計が出てきます。
ただし、数式はダメです。それから、数式は、常識的な量にしてくださいね。ワークシートが重くなることがあります。

数式なしに、数式を入れる場合は、イベント・ドリブン型のマクロにしなければなりません。

データが切れ目なく続いているのでしたら、合計が出てきます。もし、空白値が必要ならは、「""」を使えばよいですし、文字列も途中で入れられます。
    • good
    • 0
この回答へのお礼

有難う御座いますm(__)m

06-07-04 01:40

無事解決しました。

みなさまに幸あれです(^_^)

お礼日時:2006/07/04 01:38

間違えました。


=IF(COUNTA(G$1:G$1000)+1=ROW(G1),SUM(G$1:G1),"")
です。すいませんでした。m(_ _)m

この回答への補足

皆様有難う御座います\(^o^)/

仕事から帰りましたので

今から、すべて試してみます。

06-07-02 22:00

補足日時:2006/07/02 21:57
    • good
    • 0

同じG列ではありませんがH列に合計がでるのでは駄目でしょうか?


H1セルに =IF(COUNTA(G$1:G$1000)+1=ROW(G1);SUM(G$1:G1);"")
と入力しH1000セルまでコピー
但しG列が順番に入力されている事が条件になります。

この回答への補足

補足遅くなりまして申し訳御座いませんm(__)m

表としてはできるのですが、

印刷を余白最低にしてもスペースの関係で
横列は増やせないので、

その日入力終わりましたら、直近の最後に合計でれば
凄い便利だと想い、試しております。
(今日は756件入力→リンクして757件目に合計)

補足日時:2006/07/02 22:44
    • good
    • 0

このマクロはG列に変更があったとき、最後のセルの下に合計行を入れるものです。

データ入力するシートのマクロとしてペーストして下さい。

なおG列の計算式は無条件に削除しますのでご承知おきください。

ただイベントを殺してしまうのでちょっと危険なマクロです。もし途中で動かなくなったら一緒につけたイベント復活マクロを実行して下さい


Private Sub Worksheet_Change(ByVal Target As Range)
Dim LastRow, StartRow As Long, RngNumber As Range
Const RETSU As Long = 7 'G列はA列から数えて7列目。列を変えるときはここを修正
On Error Resume Next
Application.EnableEvents = False
If Target.Column = RETSU Then
With Range(Cells(1, RETSU), Cells(65536, RETSU))
.Font.ColorIndex = 0
.SpecialCells(xlCellTypeFormulas, 23).ClearContents
StartRow = .SpecialCells(xlCellTypeConstants, 1).Cells(1, 1).Row
End With
LastRow = Cells(65536, RETSU).End(xlUp).Row
With Cells(LastRow + 1, RETSU)
.Formula = "=SUM(G" & StartRow & ":G" & LastRow & ")"
.Font.ColorIndex = 5 '青色
End With
End If
Application.EnableEvents = True
End Sub

Sub イベント復活()
Application.EnableEvents = True
End Sub

この回答への補足

有難う御座いますm(__)m
今何度かためしたのですが、凄い事になりました(>_<)

以下をG列の場合(7番めで間違いありません)何処にいれればよいのでしょうか?

Private Sub Worksheet_Change(ByVal Target As Range)
Dim LastRow, StartRow As Long, RngNumber As Range
Const RETSU As Long = 7 '
On Error Resume Next
Application.EnableEvents = False
If Target.Column = RETSU Then
With Range(Cells(1, RETSU), Cells(65536, RETSU))
.Font.ColorIndex = 0
.SpecialCells(xlCellTypeFormulas, 23).ClearContents
StartRow = .SpecialCells(xlCellTypeConstants, 1).Cells(1, 1).Row
End With
LastRow = Cells(65536, RETSU).End(xlUp).Row
With Cells(LastRow + 1, RETSU)
.Formula = "=SUM(G" & StartRow & ":G" & LastRow & ")"
.Font.ColorIndex = 5 '青色
End With
End If
Application.EnableEvents = True
End Sub

補足日時:2006/07/02 22:41
    • good
    • 0

トリッキーな方法ですが、VBAを使わないでやってみました



ただし、整数限定です

とりあえず、G1 に最初のデーターを入れておきます
G2 に
 =IF(G1-INT(G1)<>0,0.1,SUM(G$1:G1)+0.1)
と入れます
書式設定で、小数点以下の桁数を 0 にします
条件付書式で条件(1)を
 セルの値が、次の値に等しい、0.1、書式は文字色を白に
条件(2)を
 数式が、=G3=0.1、書式はパターンで黄色等に(合計欄であることが判る様に)
して
このセルを、G1000 までコピーします

あとは、合計欄に新しいデータを上書きすると、その下に新しい合計が表示されます
ただし、合計以下には0.1が加算されていますが、表示はされません
    • good
    • 0
この回答へのお礼

有難う御座いますm(__)m

06-07-04 01:40

無事解決しました。

みなさまに幸あれです(^_^)

お礼日時:2006/07/04 01:38

問題が判りにくいが(>「25件入力→126件目に合計がでる」はミスタイプでは。

重要な箇所ですよ)
VBAを使わないと、データ最終行の直下行ややその下に表示できません。
あえて無理むり関数でやってみると
標準モジュールに
Function hf(a)
If a.HasFormula Then
hf = 1
Else
hf = 0
End If
End Function
を入れて、
A2に =IF(hf(A1)=0,SUM($A$1:A1),"") と入れてA1000まで式を複写しておく。
1回限りで、A列のどこかに(普通続けて)数を入れると、直前行までの和が出ます。
上記VBAは初心者には何のことだか判らないでしょうし、1回限りというのも不便で、混乱の元です。そういうことで上記は際物です。
VBAを勉強し(上記のVBAとは関係ないですが)
(1)イベントとは
(2)ある列のデータ最終行をどう捉えるか
を学んでから考えることで、多分問題にするには早すぎるしょう。
エクセル関数の本質を判ってください。

この回答への補足

ご指摘有難う御座います、ミスタイプでした。
訂正します(>_<)

たとえば80件入力時は81件目に合計がでる
次に25件入力→106件目に合計がでる

補足日時:2006/07/02 22:22
    • good
    • 0

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