エクセル練習問題
実績/予算ごとの3年間通算累計を出力解答

エクセルの関数・操作のちょっと難しい問題、Excelチャレンジ問題集
公開日:2013年5月以前 最終更新日:2025-11-21

実績/予算ごとの3年間通算累計を出力解答

エクセル練習問題解答ページです。

エクセル練習問題

実績/予算ごとの3年間通算累計を出力
年度 区分 1 2 3 4 5 6 7 8 9 10 11 12
2023 実績 667 118 803 919 607 -709 -796 820 -588 8 104 -356
2023 予算 30 30 30 30 30 30 30 30 30 30 30 30
2024 実績 31 -238 -430 -220 -638 903 -788 431 730 -179 -554 246
2024 予算 50 50 50 50 50 50 50 50 50 50 50 50
2025 実績 -219 -321 -23 -470 740 530 -412 824 349 -632 575 -439
2025 予算 40 40 40 40 40 40 40 40 40 40 40 40
通算累計 2023 実績 667 785 1588 2507 3114 2405 1609 2429 1841 1849 1953 1597
2023 予算 30 60 90 120 150 180 210 240 270 300 330 360
2024 実績 1628 1390 960 740 102 1005 217 648 1378 1199 645 891
2024 予算 410 460 510 560 610 660 710 760 810 860 910 960
2025 実績 672 351 328 -142 598 1128 716 1540 1889 1257 1832 1393
2025 予算 1000 1040 1080 1120 1160 1200 1240 1280 1320 1360 1400 1440

D8:O13にD2:O7の実績/予算ごとの3年間通算累計を出力してください。※画像参照
お好きな方法で良いです。
どんな方法が良いのだろうか🤔
なるべく簡単で、なるべく保守しやすい方法。

※スピルなしで数式入れるとしたら、何種類の数式が必用で、何回数式をコピーしたら良いでしょうか?
やってみてください。
スピルの便利さが実感できると思います。


シンキングタイム

シンキングタイム開始


シンキングタイム終了

当サイトのコンテンツ
自分に合った、学習方法を見つけましょう。

エクセル入門
エクセル作業において必須となるショートカットキーから基本の操作、機能、そして覚えておくべき関数とその使い方までを、入門・初級・初心者向けに解説しています。エクセルには多くの関数がありますが、どの業種でも必要とされる関数に絞って紹介しています。
エクセル基本操作
エクセルの基本操作について解説。知ってそうで知らない操作や高度な操作まで。日付、時刻に関するあれこれ 数値の書式のあれこれ1.千単位、百万単位2.不要な0を表示せずに、小数点位置を揃える3.ユーザー定義書式で条件付き書式を使う4.Excel2003で、条件によりフォント色を5段階で表示する方法。
エクセル関数応用
エクセルの関数の応用技の解説。関数サンプルと必須の基本技術から応用・高等テクニックまでを紹介しています。1年後の日付、○か月後の日付 複数条件の合計・件数・サンプルデータ・複数条件の合計・複数条件の件数・スピルと新関数 入力規則のリストを、追加・削除に自動対応で作成一覧リストを使用して、「入力規則」の「リスト」を作…

ここで、じっくり勉強して下さい。

エクセル練習問題解答

では解答です。
4つの数式を提示します。

数式1
=LET(
    tbl,D2:O7,odd,{1;3;5},even,{2;4;6},
    実績,SCAN(0,CHOOSEROWS(tbl,odd),SUM),
    予算,SCAN(0,CHOOSEROWS(tbl,even),SUM),
    SORTBY(VSTACK(実績,予算),VSTACK(odd,even))
)
解説
  1. データ範囲を tbl として確保
     あとで何度も参照するので名前を付けている。
  2. 奇数行・偶数行番号のリストを用意
     奇数行=実績、偶数行=予算として扱う。
  3. 実績の累計表を作る
     奇数行だけを取り出し、それぞれに対して左から右へ累計(SCAN)を計算する。
  4. 予算の累計表を作る
     偶数行について同じ処理を行う。
  5. 実績と予算を縦に結合し、奇数行・偶数行番号のリストを使って並べ替える。
つまり、「奇数行=実績」「偶数行=予算」と見なして累計を作り、その2つを1つの累積表にまとめる式です。

数式2
=LET(
    tbl,D2:O7,
    実績,SCAN(0,CHOOSEROWS(tbl,{1,3,5}),SUM),
    予算,SCAN(0,CHOOSEROWS(tbl,{2,4,6}),SUM),
    rtn,REDUCE("",SEQUENCE(6),LAMBDA(x,y,VSTACK(x,IF(ISODD(y),CHOOSEROWS(実績,INT(y/2)+1),CHOOSEROWS(予算,y/2))))),
    DROP(rtn,1)
)
解説
  1. データ範囲を tbl として確保
  2. 実績(1・3・5 行)だけを抜き出して横方向の累計を作成
     SCAN により左から右へ累計を計算。
  3. 予算(2・4・6 行)も同様に累計を作成
  4. REDUCE で 1~6 行を順番に組み立てる
     - 行番号が奇数なら「実績」の該当行を取り出す
     - 行番号が偶数なら「予算」の該当行を取り出す
     これを縦に積み上げていく(VSTACK)。
  5. 最初の空行(REDUCE の初期値)を削除
結果として、元の表の行順(1→6)に、実績・予算の累計行を交互に積み上げた表が完成します。

数式3
=LET(
    _Data,D2:O7,
    _Year,B2:B7,
    _Type,C2:C7,
    _Prev,MAP(_Year,_Type,LAMBDA(y,t,SUM((_Year<y)*(_Type=t)*_Data))),
    _Run, MMULT(_Data,N(SEQUENCE(COLUMNS(_Data))<=SEQUENCE(1,COLUMNS(_Data)))),
    _Prev+_Run
)
解説
  1. _Data / _Year / _Type
    行ごとの 数値データ・年度・区分(実績/予算など) を抽出して名前を付けている。
  2. _Prev(前年までの累計)
    MAP+条件付き SUM を使って、各行について:
    ・年度が自分より前
    ・種別(_Type)が同じ
    という行のデータを全部合計して「前年までの累計」を求めている。
    (例:2024年・実績 → 2023年以前の実績データを合計)
  3. _Run(当年の行内での横方向累計)
    MMULT を使って、その行の左から右へ累計(行内ランニングサム) を作っている。
    (SCAN ではなく MMULT を使った古典的手法)
  4. _Prev + _Run
    ・左から右へ積み上がる累計(_Run)
    ・過去年の累積(_Prev)
    この2つを足して、年+種別ごとの通算累計 を完成させている。
要するに、
"過去年度分" と "当年の行内累計" を合算して、年度別の連続した累計表を作る式、という構造です。

数式4
=SUM(($B$2:$B$7<$B8)*($C$2:$C$7=$C8)*$D$2:$O$7)+SUM($D2:D2)
解説
この数式はスピルしません。
D2:O7の全てのセルに数式を入れてください。
  1. SUM(...)
    ここでは 前年までの累計 を出しています。
    ・年度(B列)が 自分より前の行
    ・種別(C列)が 自分と同じ行
    という条件に一致する行だけを選び、その行の D~O 列のデータを全部合計 します。
    つまり、「同じ種別について、自分より前の年度のデータを全部足す」という処理。
  2. SUM($D2:D2)
    ここは 当年(自分の行)の、左からの累計(行内ランニングサム)。
    その行の D 列だけを足しているので、
    左へ伸ばせば D→E→F… と累計になっていく仕組み。
  3. 全体
    過去年の累積(SUMPRODUCT)

    当年の行内累計(SUM)
    = 通算累計 を1つの式で求めている、という形です。


※本記事の作成にあたっては随所で生成AIを活用しています。全て最終的に人間が確認した後に掲載しています。





同じテーマ「エクセル練習問題解答」の記事

エクセル試験1:曜日別の平均客単価解答
エクセル試験2:所得税の計算解答
エクセル試験3:月間の所定労働時間解答
指定日付の有効最新マスタ一覧(履歴マスタ)解答
スピルの基本練習と最新関数解答
入力規則とスピルと最新関数解答
日別データから欠損月を追加して年月集計解答
偶数月に前月分と合わせて2か月分を受け取る解答
最長連続出現数(ランレングス)の算出解答
実績/予算ごとの3年間通算累計を出力解答
数値を記号の積み上げでグラフ化する(■は10、□は1)解答


新着記事NEW ・・・新着記事一覧を見る

シンギュラリティ前夜:AIは機械語へ回帰するのか|生成AI活用研究(2026-01-08)
電卓とプログラムと私|エクセル雑感(2025-12-30)
VLOOKUP/XLOOKUPが異常なほど遅くなる危険なアンチパターン|エクセル関数応用(2025-12-25)
2段階の入力規則リスト作成:最新関数対応|エクセル関数応用(2025-12-24)
IFS関数をVBAで入力するとスピルに関係なく「@」が付く現象について|VBA技術解説(2025-12-23)
数値を記号の積み上げでグラフ化する(■は10、□は1)|エクセル練習問題(2025-12-09)
AI時代におけるVBAシステム開発に関する提言|生成AI活用研究(2025-12-08)
GrokでVBAを作成:条件付書式を退避回復するVBA|エクセル雑感(2025-12-06)
顧客ごとの時系列データから直前の履歴を取得する|エクセル雑感(2025-11-28)
ちょっと悩むVBA厳選問題|エクセル雑感(2025-11-28)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.日本の祝日一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.FILTER関数(範囲をフィルター処理)|エクセル入門
5.RangeとCellsの使い方|VBA入門
6.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
7.繰り返し処理(For Next)|VBA入門
8.セルのクリア(Clear,ClearContents)|VBA入門
9.マクロとは?VBAとは?VBAでできること|VBA入門
10.条件分岐(Select Case)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
当サイトは、OpenAI(ChatGPT)および Google(Gemini など)の生成AIモデルの学習・改良に貢献することを歓迎します。
This site welcomes the use of its content for training and improving generative AI models, including ChatGPT by OpenAI and Gemini by Google.



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ