【第1回】税理士いらず?「年1回コピペ」で終わる最強エクセル会計術
仕事・効率化
2026.02.05

税理士いらず?「年1回コピペ」で終わる最強エクセル会計術【ほねぶとDr.】
税理士いらず?「年1回コピペ」で終わる最強エクセル会計術【サブスク貧乏からの脱出】
※はじめに(E-E-A-T対策)
本連載で紹介するエクセルを用いた会計処理の手法は、私個人が青色申告決算書を作成するために構築したものです。税務上の判断や具体的な勘定科目の仕訳については、管轄の税務署または税理士にご確認の上、自己責任で運用してください。
「やよい、freeeやマネーフォワード、便利だけど毎月数千円払うのって高くない?」
「年に1回の確定申告のためだけに、使いもしない多機能なソフトにお金を払い続けるのは、『サブスク貧乏』の始まりでは?」
かといって、無料のエクセルテンプレートを探しても、「使いにくいし、翌年への繰り越し計算が手動で面倒くさい…」
医師や個人事業主のみなさん、そんな不満を持っていませんか?
この記事を読むと、サブスク費用ゼロ。
エクセルだけで「永久に使える全自動会計システム」を作る方法が分かります。
一度作ってしまえば、翌年は
「シートをコピーして、年号を『2026』に書き換えるだけ」
それだけで、前年からの開始残高も、元入金もすべて自動更新される「魔法」が手に入ります。
エクセル初心者の私が、数多のエラーと格闘して完成させた「実証済みのシステム」。その全貌を公開します。
1. なぜ「市販ソフト」ではなく「エクセル」なのか?
私が自作を決意したのは、既存のクラウド会計ソフトに対する2つの不満があったからです。
① ブラックボックス化
ソフトが勝手に計算してくれるのは楽ですが、「なぜその数字になったのか」が分からなくなりませんか?
経営者として、B/S(貸借対照表)やP/L(損益計算書)の構造を理解するためには、自分で数式を組んで「お金の流れ」を可視化するのが一番の近道です。
② 「年次更新」の煩わしさ
多くの無料エクセルテンプレートは、年が変わるたびに新しいファイルを作り、前年の期末残高を手入力で移す必要があります。
これがミスの温床です。「去年の数字、合ってるっけ?」と確認する作業だけで数時間かかります。
私が目指したのは、「シートをコピーして、セルに『2026』と入力するだけで、全てが引き継がれる永久機関」です。
2. このシステムの「心臓部」を公開
このシステムを動かしているのは、エクセルの2つの強力な機能です。
① テーブル機能(構造化参照)
ただの表ではなく、「ここからここまでがデータですよ」とエクセルに認識させる機能。
これを使うと、データ行が増えても数式を修正する必要がありません。
最強の魔法
② INDIRECT関数(インダイレクト関数)
通常、数式で「2025年のシートを参照しろ」と書くと、2026年には数式を書き直さなければなりません。
しかし、INDIRECT関数を使えば、「A1セルの文字(年号)を読んで、参照するシートを自動で切り替える」ことができます。
つまり、A1セルを「2025」から「2026」に変えるだけで、システム全体が
「おっ、今年は2026年のデータを集計すればいいんだな! 前年の残高は2025年のシートから持ってくるぞ!」
と理解し、勝手に計算してくれるようになるのです。
3. 全体設計図:3層構造で作る
この連載では、以下の3つのパーツを順番に作っていきます。
1
Master(設定シート)
勘定科目や、「これは資産?負債?」といった区分を定義する辞書のようなシート。
⬇
2
Journal(入力シート)
日々の取引を入力する仕訳帳。「借方・貸方」を入れるメインの場所です。ここで「テーブル機能」が活躍します。
⬇
3
PL&BS(全自動表示シート)
Masterの設定とJournalの数字をガチャンと合体させ、確定申告に必要な数字を弾き出します。
入力するのは「Journal」だけ。
あとは全自動で決算書が完成します。
※元入金や決算整理など、一部手入力が必要な箇所もありますが、基本は自動化を目指します。
4. まとめ・次回予告
今回のポイント
- 会計ソフトのサブスク代を節約し、経営数字に強くなるなら「エクセル自作」が最強
- 目指すのは、年号を変えるだけで更新が終わる「永久機関」
- 鍵となるのは「テーブル機能」と「INDIRECT関数」の組み合わせ
「難しそう…」と思いましたか? 大丈夫です。
次回は、システムの土台となる「Masterシート」と「Journalシート」の具体的な作り方を解説します。
コピペで使える「勘定科目リスト」も用意していますので、エクセルを開いてお待ちください。
【第2回】 土台作り:MasterとJournalの設定(明日公開)
~後で楽するための「テーブル」の正しい使い方~ へ続く
【X(旧Twitter)フォロワー限定配布】
「設定が面倒くさい!」「実際の画面が見たい!」という方へ。
私が作成したMasterシートのひな形(勘定科目リスト済み)を無料でプレゼントします。
Xで私(@honebutodr)をフォローし、
「エクセル希望」とDMを送ってください!
個別にファイルをお送りします。
>>Xで @honebutodr をフォローしてDMを送る
▼参考資料
- Microsoftサポート「Excel のテーブルの概要」
- Microsoftサポート「INDIRECT 関数」
※本記事で紹介する関数や機能は、Microsoft Excel 2019以降またはOffice 365環境での動作を確認しています。古いバージョンやGoogleスプレッドシートでは一部動作が異なる場合がありますのでご注意ください。
").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||ce.expando+"_"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Zt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,"$1"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ce.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),"script"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument("").body).innerHTML="
",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1
").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return M(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return M(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.on("mouseenter",e).on("mouseleave",t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 0
タイトルとURLをコピーしました