- ベストアンサー
EXCELで最終行の合計を出す方法
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
>「B1:D1」の部分が「B1とD1とF1」の合計を出したい場合です。 何でもかんでも出来るわけじゃありませんが、たまたま今回は1行おきという規則正しい場合なので、かろうじて手はあります。 例: =SUMPRODUCT((MOD(COLUMN(B1:F1),2)=0)*OFFSET(B1:F1,COUNT(B:B),0)) 別の方法: 1行目に「合計したい列の目印」が計算で判定できる場合、SUMIF関数を使って計算する手もあります。 この方法では、「目印が付いた列」は別に規則的に配置されている必要はありません。 例: 1行目に「~~計」と記入してある列の最終行(~~の部分は何でもよい) =SUMIF(B1:F1,"*計",OFFSET(B1:F1,COUNT(B:B),0))
その他の回答 (5)
- KURUMITO
- ベストアンサー率42% (1835/4283)
後からまた難題を出されるかもしれませんがA列からF列までが対象の範囲であるとして、また、各列では必ずしもデータがすべてのセルに入力されているわけではなく途中に空白のセルもあったりした場合でも、最終、最新のデータの行を対象に列の集計を行うとしたら単純な式で処理できるわけではありません。複雑になります。 最終の行でのB列からF列までの集計は次の式になりますね。 =SUM(INDEX(B:B,MAX(IF(COUNT(B:B),MATCH(10^10,B:B),),IF(COUNT(C:C),MATCH(10^10,C:C),0),IF(COUNT(D:D),MATCH(10^10,D:D),0),IF(COUNT(E:E),MATCH(10^10,E:E),0),IF(COUNT(F:F),MATCH(10^10,F:F),0))):INDEX(F:F,MAX(IF(COUNT(B:B),MATCH(10^10,B:B),),IF(COUNT(C:C),MATCH(10^10,C:C),0),IF(COUNT(D:D),MATCH(10^10,D:D),0),IF(COUNT(E:E),MATCH(10^10,E:E),0),IF(COUNT(F:F),MATCH(10^10,F:F),0)))) 勿論上の式ではE列やF列にデータが入力されていない場合でも計算します。 B列、D列およびF列についてだけ集計したいのでしたら次の式となります。 =SUM(INDEX(B:B,MAX(IF(COUNT(B:B),MATCH(10^10,B:B),),IF(COUNT(C:C),MATCH(10^10,C:C),0),IF(COUNT(D:D),MATCH(10^10,D:D),0),IF(COUNT(E:E),MATCH(10^10,E:E),0),IF(COUNT(F:F),MATCH(10^10,F:F),0))),INDEX(D:D,MAX(IF(COUNT(B:B),MATCH(10^10,B:B),),IF(COUNT(C:C),MATCH(10^10,C:C),0),IF(COUNT(D:D),MATCH(10^10,D:D),0),IF(COUNT(E:E),MATCH(10^10,E:E),0),IF(COUNT(F:F),MATCH(10^10,F:F),0))),INDEX(F:F,MAX(IF(COUNT(B:B),MATCH(10^10,B:B),),IF(COUNT(C:C),MATCH(10^10,C:C),0),IF(COUNT(D:D),MATCH(10^10,D:D),0),IF(COUNT(E:E),MATCH(10^10,E:E),0),IF(COUNT(F:F),MATCH(10^10,F:F),0))))
お礼
KURUMITOさん 丁寧なご説明ありがとうございました。
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 横からお邪魔します。 >「B1とD1とF1」の合計を出したい場合です とありますので・・・ 一例です。 ※ お示しの画像のB列には途中に空白セルがないとして、 B列データが入っている最終行とします。 =SUM(IF(MOD(COLUMN(B1:F1),2)=0,OFFSET(B1:F1,COUNT(B:B),,1))) これは配列数式になってしまいますので、Shift+Ctrl+Enterで確定してください。 この画面からコピー&ペーストする場合は表示したいセルに貼り付け後 数式バー内で一度クリックします。 編集可能になりますので、Shift+Ctrlキーを押しながらEnterキーで確定! 数式の前後に{ }マークが入り配列数式になります。 お役に立ちますかね?m(_ _)m
お礼
tom04さん 回答ありがとうございます。 丁寧なご説明で よくわかりました。 コピペしたら私でも使えそうです。 ありがとうございました。
- keithin
- ベストアンサー率66% (5278/7941)
>できるだけ簡単な関数で表示できれば では簡単のため,各列ともに先頭の4月行から所定の行(たとえば1月)まで「漏れなく数字が埋まっている」とします。 数式は =SUM(OFFSET(B1:D1,COUNT(B:B),0)) のように計算する事ができます。 たとえばB列は1月迄埋まっているけどC列は12月迄しか数字が入っていない(最下行がどこなのか1列ずつ調べなきゃ判らない)みたいなイレギュラーを考え出すと,当然ですが遙かにメンドクサイ事をやるハメになります。 E列に各行毎の小計を出させておいて,その一番下にある数字を拾ってくるみたいな方法がお薦めになります。 E2: =IF(COUNT(B2:D2),SUM(B2:D2),"") 以下コピー 計算式: =LOOKUP(MAX(E:E)+1,E:E)
お礼
keithinさん 何度も回答ありがとうございました。
補足
keithinさん 早速の回答ありがとうございます。 この場合はB列~D列が続いていますが もしBC列の間、CD列の間に他のデータが入っている場合は どうなるのでしょうか? =SUM(OFFSET(B1:D1,COUNT(B:B),0)) の「B1:D1」の部分が「B1とD1とF1」の合計を出したい場合です。 自分で考えてみましたが わかりません・・・
- kagakusuki
- ベストアンサー率51% (2610/5101)
ANo.1です。 申し訳御座いません、勘違いをしておりました。 先程の関数は間違いで、正しくは、 =SUM(INDEX($B:$B,MATCH(E9+307,$B:$B)):INDEX($D:$D,MATCH(E9+307,$B:$B))) 等として下さい。(どの列も最終行は必ず同じ行となる場合)
お礼
kagakusukiさん 何度も回答ありがとうございました。
- kagakusuki
- ベストアンサー率51% (2610/5101)
=SUM($B:$D) でOKです。
お礼
kagakusukiさん 回答ありがとうございました。
お礼
keithinさん 何度も回答して頂きありがとうございます。 いろんなことができるんですね。 感動しています。 使わせて頂きます。 ありがとうございました。