- ベストアンサー
エクセル SUM関数 自動的に最終行を取得したい
A1→1 A2→2 B1→=SUM(A1:A2) と入力しています。 この状態で A3→3 と入力した場合 自動的に B1→=SUM(A1:A3) にすることは不可能ですか? 「=SUM(A1:A3)」のA3の部分をA列の最終行を取得したいです。 VBAなら可能でしょうか? ご教授よろしくお願い致します。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
範囲内で最終行まで確実に数値があるなら =SUM(OFFSET($A$1,,,COUNT($A$1:$A$100))) 範囲内で最終行までにブランクがあるなら =SUM(OFFSET($A$1,,,MATCH(MAX($A$1:$A$100)+1,$A$1:$A$100))) 上記の$A$1と$A$100が範囲にかかわる部分です。 範囲が変わる場合はここを替えてください。
その他の回答 (6)
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
初心者にわかりよいのは INDIRECT関数のようです。 =SUM(INDIRECT("A1:A"&COUNT(A:A))) 人気は無いですがお勧めは =SUM(A1:INDEX(A:A,COUNT(A:A))) A1セルが文字列なら =SUM(A1:INDEX(A:A,COUNTA(A:A))) で 参考まで
お礼
大変参考になりました。ありがとうございます。
=SUM(OFFSET(A1,,,COUNT(A:A)))
お礼
できました。ありがとうございます。
- imogasi
- ベストアンサー率27% (4737/17070)
質問者の気休めに、VBAで Sub test01() d = Range("A65536").End(xlUp).Row MsgBox d Cells(d + 1, "A") = WorksheetFunction.Sum(Range("A1:A" & d)) End Sub 直ぐ下の行にA1セルから最終行までの合計を出している。 ーー 関数では、1つのやり方として =SUM(OFFSET(A1,0,0,COUNT(A1:A100),1)) A列のA1以下に数だけのセルが有る場合のこと。 ーー SUMPRODUCT関数では =SUMPRODUCT((A1:A100<>"")*(A1:A100)) ーーー 配列数式では 例データ 1 2 3 4 a d 12 の場合、字列があってもSUMの場合は =SUM(IF(A1:A100<>"",A1:A100),0)と入れて、SHIFT+CTRL+ENTER(3つのキーを同時押し)で22と出る。
お礼
ありがとうございます。 できました。 「SHIFT+CTRL+ENTER」って必要なのでしょうか? なくても22になりました。
データが連続しているなら、次の方法もあります。大して意味はありませんが…… =SUM(INDIRECT("A1:A"&COUNT(A:A)))
お礼
mshr1962さんの=SUM(OFFSET($A$1,,,COUNT($A$1:$A$100)))と同意味ですね! ありがとうございます。参考になりました。
- KURUMITO
- ベストアンサー率42% (1835/4283)
1行目から最終行までの集計は回答No1の方法でできますし簡単です。=SUM(A:A)の方法ですとA列に文字列があった場合でもそのセルは集計されませんし、数値のセルの間に空きのセルがあった場合でも集計されます。 逆にA3セルから最終セルの集計ではA1セルからA2セルまでに数値が入力されている場合にはその数値も集計されますので、次のような式になりますね。 =SUM(A:A)-SUM(A1:A2)
お礼
こういう使い方もできるのですね。 参考になりました。
1行目から最終行までなら =SUM(A:A) が簡単です。
お礼
やっぱこれしかないですかね、、、 ありがとうございます。
お礼
ありがとうございます。参考になりました。