[{"data":1,"prerenderedAt":308},["ShallowReactive",2],{"content-/consolidation-simulator-excel-export-plan":3,"all-pages-for-dir":286,"related-/consolidation-simulator-excel-export-plan":287,"og-image-/consolidation-simulator-excel-export-plan":307},{"id":4,"title":5,"body":6,"category":265,"concepts":266,"description":267,"extension":268,"meta":269,"navigation":270,"ogImage":266,"path":271,"project_name":272,"published":273,"publishedAt":274,"seo":275,"source":276,"stem":277,"tags":278,"todo":266,"unpublished":273,"updatedAt":266,"__hash__":285},"pages/2026-09/2026-09-21/consolidation-simulator-excel-export-plan.md","連結会計シミュレーターの結果をExcelの連結精算表ブックに書き出す計画：13年つなぐとエンジンは2年目で止まった",{"type":7,"value":8,"toc":250},"minimark",[9,13,27,39,44,47,54,58,64,74,77,80,84,87,97,113,116,119,122,126,129,132,139,142,145,148,151,154,157,161,164,167,173,176,179,190,196,199,202,205,208,215,226,233,236,239,242],[10,11,5],"h1",{"id":12},"連結会計シミュレーターの結果をexcelの連結精算表ブックに書き出す計画13年つなぐとエンジンは2年目で止まった",[14,15,16,17,22,26],"p",{},"前日に",[18,19,21],"a",{"href":20},"/consolidation-simulator-dd-fixes","不具合を16件直した",[18,23,25],{"href":24},"/consolidation-simulator","連結会計シミュレーター","は、持分の取引を1回ずつなら計算できる。\nこれを13年分つないで、S社1社の持分を 0% から 100% まで上げ、5% まで下げるストーリーにする。\nそのストーリーを Excel のブックに書き出し、数字の出どころを辿れるようにしたい。\n10時25分に始めたセッションは、その計画書づくりだった。",[14,28,29,30,34,35,38],{},"計画の要は、エンジンの ",[31,32,33],"code",{},"executeCapitalTransition"," と ",[31,36,37],{},"nextState"," で年度をつなげるかどうかにあった。\n前の年度の期末状態を、そのまま次の年度の期首に渡せるのか。",[40,41,43],"h2",{"id":42},"参考excelとキャッシュフロー側の前例","参考Excelとキャッシュフロー側の前例",[14,45,46],{},"最初に、既存の計画書、参考にする Excel（シート構成、数式、色）、シミュレーターの関数とテストを Claude Code に読ませた。\n参考 Excel は連結精算表の演習ブックで、8枚のシートが左から「出力 → 入力」の順に並んでいる。\n連結精算表は、個別TB（P社とS社の個別の試算表）を INDEX/MATCH で、修正仕訳を SUMIFS で拾う作りである。",[14,48,49,50,53],{},"リポジトリの中には、キャッシュフロー側で Excel を出力する前例 ",[31,51,52],{},"cashflow-excel-export.ts"," があった。\nただ、これは ExcelJS でブラウザからダウンロードさせる方式である。\n今回ほしいのは画面のボタンではなくレビュー用に生成するブックなので、計画ではこの方式を採らなかった。",[40,55,57],{"id":56},"_13区間をつなぐとどこまで進むか","13区間をつなぐと、どこまで進むか",[14,59,60,61,63],{},"次に、年度をつなげるかどうかをエンジンの API で確かめさせた。\n13区間は、どれも単発なら計算できる。\nところが前の年度の ",[31,62,37],{}," を次の年度の期首に渡すと、2区間目（10% → 15%）で拒否された。",[65,66,72],"pre",{"className":67,"code":69,"language":70,"meta":71},[68],"language-text","『その他』の期首状態の引継ぎには対応していません\n","text","",[31,73,69],{"__ignoreMap":71},[14,75,76],{},"引き継げるのは「連結している子会社」の状態だけで、「その他」や「持分法」の状態は引き継げない作りだった。\n計画は、エンジンの手直しから始めることになった。",[14,78,79],{},"あわせて、エンジンの精算表が実際に返す列と行を1回だけ実測させ、Excel の行ラベルとの対応表を計画書に載せた。\n並びはおおむね対応していた。\n違いは、土地の評価差額を「S社修正」の列に出すか修正仕訳の1項目に置くかと、開始仕訳を1本の複合仕訳で持つか項目別に分けるかの2点だった。\nどちらも Excel 側の形に寄せることにした。",[40,81,83],{"id":82},"excel化の既存スキルと再利用の範囲","Excel化の既存スキルと再利用の範囲",[14,85,86],{},"計画書を書き始める前に、Excel 化のスキルを探すよう指示した。\neurekapu-nuxt4 とこのリポジトリ、ユーザーレベルの3か所を Claude Code に見てもらうと、検証と差分とスタイルのスクリプトが実在した。\neurekapu-nuxt4 には、キャッシュフロー精算表を多年度で生成するスキルがあり、Excel 生成の規約がすでに固まっていた。",[14,88,89,90,34,93,96],{},"再利用の範囲を決めるため、",[31,91,92],{},"xlsx_helpers.py",[31,94,95],{},"verify_cfws_excel.py"," の中身まで読ませた。\n決めたのは次の3点である。",[98,99,100,107,110],"ul",{},[101,102,103,104,106],"li",{},"書式の共通関数は ",[31,105,92],{}," と同じ作り（直書きの値は青、同じシートの数式は黒、他シートの参照は緑）にして、必要な分だけをこのリポジトリに持つ。別リポジトリのファイルをパスで import すると、Windows と macOS でパスが違って壊れるためである",[101,108,109],{},"手直しした版との差分を取るスクリプトは、コピーせずパス指定で使う",[101,111,112],{},"検証は、生成時の数値検証と、Excel 本体（COM）で開いて再計算させる検証の2段構えにする",[40,114,115],{"id":115},"図2枚と実行環境の実測",[14,117,118],{},"計画書には図を2枚入れた。\n13年のストーリーの全体像と、ブックの中の参照構造である。\n2枚とも lint を通った。",[14,120,121],{},"本文を書く前に、Python の実行環境も実測させた。\nuv 0.6.2、Python 3.11.9、pywin32、Excel 本体がそろっていた。\nCOM による検証は Windows 機でしか動かないので、macOS では生成と数値検証までにとどめると計画に書いた。",[40,123,125],{"id":124},"codexのレビューで増えた手当て","Codexのレビューで増えた手当て",[14,127,128],{},"書き上げた計画書を Codex のレビューに出した。\n初回はファイルの読み取りが14回成功し、判定は「要修正」、指摘は3件だった。\nClaude Code には指摘を鵜呑みにさせず、該当コードを読んで判定し直してもらった。\n3件とも採用になった。",[14,130,131],{},"3件のうち1件は、計画書の書き方そのものが誤っていた。\n持分法の中での一部売却について、当初は「期首の値の読み先だけを差し替える」と書いていた。\nしかし算式は「当期の投資利益 − 当期ののれん償却」に売却した割合を掛ける形で、当期分しか見ていない。\n期首に累積額を持たせても、算式がそれを使わない。\n計画書は、算式ごと直す形に書き換えさせた。",[14,133,134,135,138],{},"前の文脈を引き継ぐ ",[31,136,137],{},"resume --last"," で再レビューに出すと、追加の指摘が1件来た。\n持分法を適用し始める X3（3年目）の利益の取込みも、単年度の式になっていた。\nX3 の既存持分は X1 末の 10% と X2 末の 5% の2層で、保有した年数が違う。\n計画書の前提の数字なら、層ごとに取り込むと 20,000 × 10% ＋ 10,000 × 5% ＝ 2,500 になる。\nいまの式では 10,000 × 15% ＝ 1,500 にしかならない。",[14,140,141],{},"3回目のレビューで、判定は「計画として妥当」に変わった。\n年度をつなぐためにエンジンに入れる手当ては、合わせて4つになった。",[40,143,144],{"id":144},"決裁フォームの5項目",[14,146,147],{},"判断が要る項目は5件あった。\n決裁フォームの選択肢を、3択で推奨を1つ付ける形で定義させた。\nそれを計画書の HTML に埋め込み、Chrome の前面タブに出させた。",[14,149,150],{},"たとえば依頼の中で、自分は「連結AJEのそれぞれの項目ごとのシートも作ってほしい」と伝えていた（連結AJE は連結修正仕訳のシート）。\nこれが1枚のシートの中の区切りを指すのか、項目ごとの別シートを指すのかで、SUMIFS の組み方が変わる。\nそこで決裁の1項目にしてもらった。",[14,152,153],{},"描画の確認では、図1が画面外に流れた。\n位置を合わせて撮り直させても、図1の位置へのスクロールがずれる。\nページ内で撮るのはやめ、SVG 単体を直接開いて、重なりや見切れがないことを見てもらった（ページ内の埋め込みサイズ 720×432 は実測済み）。",[14,155,156],{},"決裁サーバーが終了したあと、ディスク上の回答ファイルを調べさせると、10:57 に書かれていた。\n5件とも推奨の A で、コメントは付けていない。\nAJE シートは1枚にまとめて中を項目で区切る、持分計算表と仕訳の金額はまず値で置いてレビュー後に数式化する、などが決まった。",[40,158,160],{"id":159},"phase-1で年度はつながったか","Phase 1で年度はつながったか",[14,162,163],{},"計画書に決裁を反映したあと、Phase 1（エンジンの手当て）の終わりを区切りにする点で、Claude Code と意見が一致した。\nエンジンに触るのは Phase 1 だけなので、公開中のシミュレーターへの影響もそこで閉じる。",[14,165,166],{},"利益剰余金には、エンジンの中で別名が8種類ある。\n当期仕訳のうち、どの仕訳がどの別名で利益剰余金を直接動かしているかを、全441組で実測させた。\n変更前の結果を 2,205組のスナップショットに保存させてから、エンジンを編集させた。\n編集後、簡易入力の結果は全2,205組で変わっていなかった。\n画面の確認では、数値入力を直接書き換えても Vue に届かなかったので、E2E と同じくプリセットボタン経由で切り替えてもらった。",[14,168,169,170,172],{},"13区間は ",[31,171,37],{}," で最後までつながり、年度のつなぎ目の食い違いは0件になった。",[40,174,175],{"id":175},"ブックの置き場所と命名の決まり",[14,177,178],{},"続けて、生成するブックの置き場所と、命名とアーカイブの決まりを伝えた。\nClaude Code は最初に「Excel ファイルはまだ生成していません」と断った。\nここまでに作ったのはエンジンの改修と計画書で、ブックの生成は Phase 3 の作業だった。",[14,180,181,182,185,186,189],{},"決まりは、ファイル名に年月日と時刻を入れ、新しい版を書き出す前に過去の版を ",[31,183,184],{},"old"," へ移すというものである。\neurekapu-nuxt4 の既存スキルにある ",[31,187,188],{},"retire_old"," と同じ作法にした。",[14,191,192,193,195],{},"生成は、先に作業領域で試させてから、Excel 本体で検証させた。\n壊れた版を指定のフォルダに置かないためである。\n検証スクリプトが空振りしないことも確かめた。\n連結AJE の金額を1か所だけ＋123 に書き換えたブックで、NG が10件出た。\n最初の版では、連結精算表の 8,736セル（13年度 × 42行 × 16列）がエンジンの精算表とすべて一致した。\n2回目の生成では1回目の版が ",[31,194,184],{}," へ移り、フォルダの直下には最新の1版だけが残った。",[40,197,198],{"id":198},"最初のブックへの3つの指摘",[14,200,201],{},"最初のブックを見て、3点を指摘した。\n持分計算表に計算式が無いこと、罫線が無いこと、個別TBへのリンクが無いことである。\n持分計算表はエンジンの計算結果を値で並べただけで、どの数字がどこから来たのかを Excel の中で辿れない状態だと、Claude Code も認めた。",[14,203,204],{},"決裁で「まず値で置き、レビュー後に数式化」としていた部分である。\nこの指摘をそのレビュー結果として扱い、数式化に進めてもらった。\n直した版でも、連結AJE の仕訳の金額132個は直書きの値（青字）のまま残った。",[40,206,207],{"id":207},"シート間参照の式の並び順",[14,209,210,211,214],{},"次に、",[31,212,213],{},"=G15-S社_TB!$F$20"," という式を貼って伝えた。\nClaude Code は、ルールを次のように復唱した。\n他シートの参照と同じシートのセルが混ざる式では、必ず他シートの参照を先頭に置く。\nCtrl+[ で他シートのセルへ直接飛べるようにするためである。",[14,216,217,218,221,222,225],{},"Excel の Ctrl+[ は、式の先頭の参照へ飛ぶ。\n確かめたいのは他シートのセルなので、同じシートの ",[31,219,220],{},"G15"," が先頭にあると遠回りになる。\n差が0かを見る照合の式は、引く向きを逆にしても判定が変わらない。\nだから ",[31,223,224],{},"=S社_TB!$F$20-G15"," の順にそろえる。",[14,227,228,229,232],{},"連結AJE の金額132個を、持分計算表と S社_TB を参照する数式に組み替えさせ、続けて Check の式の並びもこのルールで直させた。\n最終版の ",[31,230,231],{},"…_20260921_122035.xlsx"," を置き、検証も通った。",[40,234,235],{"id":235},"明日に積んだもの",[14,237,238],{},"進捗を計画書に書き戻させ、続きは add-task で明日（2026-09-22）の Google タスクに登録した。\n中身は、ブックのレビューと残り（開始仕訳の項目別の繰越し、コミット）である。\n登録後にタスクを取り直させ、期日が入っていることと、メモにディレクトリ、計画書、プロンプト、参考の4項目がそろっていることも確かめた。\nコミットはまだしていない。",[40,240,241],{"id":241},"学び",[98,243,244,247],{},[101,245,246],{},"単発では13区間とも通る計算が、前の年度の期末を次の年度の期首に渡すと2区間目で止まった。計画書を書く前にこの受け渡しを実測させたから、エンジンの手当てを Phase 1 として計画に組み込めた",[101,248,249],{},"他シートの参照と同じシートのセルが混ざる式は、他シートの参照を先頭に置く。Ctrl+[ で飛んだ先が、確かめたいセルになる",{"title":71,"searchDepth":251,"depth":251,"links":252},2,[253,254,255,256,257,258,259,260,261,262,263,264],{"id":42,"depth":251,"text":43},{"id":56,"depth":251,"text":57},{"id":82,"depth":251,"text":83},{"id":115,"depth":251,"text":115},{"id":124,"depth":251,"text":125},{"id":144,"depth":251,"text":144},{"id":159,"depth":251,"text":160},{"id":175,"depth":251,"text":175},{"id":198,"depth":251,"text":198},{"id":207,"depth":251,"text":207},{"id":235,"depth":251,"text":235},{"id":241,"depth":251,"text":241},"dev",null,"連結会計シミュレーターの計算結果を、数字の出どころを辿れるExcelブックにする計画を立てた記録。13年つなぐ実測でエンジンが2年目で止まると分かり、既存のExcel生成スクリプトの再利用範囲を決め、Codexのレビュー3回と決裁5件を経て最初のブックまで作った。","md",{},true,"/consolidation-simulator-excel-export-plan","mdx-playground",false,"2026-09-21T00:00:00.000Z",{"title":5,"description":267},"make-diary","2026-09/2026-09-21/consolidation-simulator-excel-export-plan",[279,280,281,282,283,284],"連結会計","Excel","openpyxl","計画書","Codex","Claude Code","w_ITcA1K_BIzenNvWY2Rlt0KBcNdLTWzCxaigd-LmhE",[],[288,292,296,300,304],{"title":289,"path":290,"publishedAt":291},"後回しにした理由を探したら、そんな記録はどこにもなかった","/course-restart-and-tax-plan","2026-09-13T00:00:00.000Z",{"title":293,"path":294,"publishedAt":295},"Web版Claude Codeに12セッションを一括投入 — 教材の計画書を先に揃えてクラウドで並列実装させる","/code-course-cloud-sessions-dispatch","2026-07-25T00:00:00.000Z",{"title":297,"path":298,"publishedAt":299},"Excel差分検出スキルとCFマッピングJSON自動生成 - Codex4ラウンドで計画を磨いた1日","/excel-diff-cf-mapping","2026-04-17T00:00:00.000Z",{"title":301,"path":302,"publishedAt":303},"CF精算表の独立Excel自動生成 -- 42論点一括生成とTurso DB連携まで","/cfws-excel-automation","2026-04-15T00:00:00.000Z",{"title":305,"path":306,"publishedAt":274},"2026年9月21日の開発日記 - Excel講座のナレーションを本人の声に、連結シミュレーターは紙面照合とExcel化へ","/2026-09-21-diary","https://log.eurekapu.com/og/blog/consolidation-simulator-excel-export-plan.png?v=2026-09-21T00%3A00%3A00.000Z&title=%E9%80%A3%E7%B5%90%E4%BC%9A%E8%A8%88%E3%82%B7%E3%83%9F%E3%83%A5%E3%83%AC%E3%83%BC%E3%82%BF%E3%83%BC%E3%81%AE%E7%B5%90%E6%9E%9C%E3%82%92Excel%E3%81%AE%E9%80%A3%E7%B5%90%E7%B2%BE%E7%AE%97%E8%A1%A8%E3%83%96%E3%83%83%E3%82%AF%E3%81%AB%E6%9B%B8%E3%81%8D%E5%87%BA%E3%81%99%E8%A8%88%E7%94%BB%EF%BC%9A13%E5%B9%B4%E3%81%A4%E3%81%AA%E3%81%90%E3%81%A8%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%B3%E3%81%AF2%E5%B9%B4%E7%9B%AE%E3%81%A7%E6%AD%A2%E3%81%BE%E3%81%A3%E3%81%9F&author=Kei%20Komatsu&sig=708ae62ccb09f382",1790033551678]