- 作成日 : 2025年12月2日
スプレッドシートで現金出納帳を作るには?GASを使ったやり方や自動計算の設定方法
Googleスプレッドシートで現金出納帳を作成すると、日々の入出金を一元管理でき、残高の把握や月次集計がしやすくなります。
本記事では、Googleスプレッドシートやエクセルを使った現金出納帳の作成手順から、自動計算機能の設定、GASでの作り方、便利な関数の活用方法まで詳しく解説します。
小規模事業者から個人事業主まで、誰でも簡単に使える実践的なキャッシュブック作成のテクニックを紹介します。
目次
スプレッドシートで作る現金出納帳の基本構成とは?
スプレッドシートの現金出納帳は、日付・摘要・収入・支出・残高の5つの基本項目で構成され、自動計算により常に正確な残高を把握できます。 この構成により、現金の流れを一目で確認できるようになります。
現金出納帳に必要な基本項目の理解
現金出納帳の基本構成要素は、以下の通りです。
第一に「日付」は取引が発生した日を記録し、時系列での管理を可能にします。第二に「摘要」は取引内容を簡潔に記載し、後から確認する際の手がかりとなります。第三に「収入金額」は現金の入金を、第四に「支出金額」は現金の出金を記録します。第五に「残高」は、前日残高に当日の収支を加減算した金額を表示します。
エクセルとGoogleスプレッドシートの違いと選び方
エクセル(Excel)で現金出納帳を作成する場合、オフライン環境でも使用でき、高度な機能が豊富です。一方、Googleスプレッドシート(スプシ)は、クラウドベースで複数人での共有が容易で、自動保存機能により作業内容が失われる心配がありません。小規模事業や個人事業主の場合は、無料で使えるGoogleスプレッドシートがコスト面で有利です。
現金出納帳のレイアウト設計のポイント
見やすく使いやすい現金出納帳にするため、レイアウト設計が重要です。ヘッダー部分には、会社名や部署名、対象期間を明記します。データ入力部分は、1行1取引を原則とし、月ごとにシートを分けるか、年間を通じて1シートで管理するかを決定します。印刷時の見やすさも考慮し、A4サイズに収まるよう列幅を調整します。
スプレッドシートで現金出納帳を作成する具体的な手順は?
現金出納帳の作成は、基本レイアウトの設定、計算式の入力、書式設定という3つのステップで完成します。 以下、詳細な作成手順を解説します。
STEP1:新規シートの作成と基本設定
まず、新しいスプレッドシートを作成し、シート名を「現金出納帳_2025年」などわかりやすい名前に変更します。A1セルに「現金出納帳」と入力し、タイトルとします。3行目に項目名を入力します。
A3「日付」、B3「摘要」、C3「収入」、D3「支出」、E3「残高」、F3「備考」。項目行は太字にし、背景色を設定して見やすくします。
STEP2:データ入力欄の準備と書式設定
4行目以降をデータ入力欄とします。日付列(A列)には日付形式を設定し、カレンダーから選択できるようにします。金額列(C列、D列、E列)には通貨形式を設定し、自動的に円記号と3桁区切りが表示されるようにします。行の高さを統一し、罫線を追加して見やすいレイアウトを作成します。
STEP3:残高計算式の設定
残高の自動計算は、現金出納帳の核心部分です。E4セルに前月繰越残高を手動入力し、E5セルに以下の計算式を入力します。
=E4+C5-D5
この式は、前行の残高(E4)に当行の収入(C5)を加え、支出(D5)を引いて残高を計算します。E5セルをコピーして、下の行に貼り付けることで、自動的に残高が計算されます。
STEP4:データの入力規則と条件付き書式
データの正確性を保つため、入力規則を設定します。日付列には過去1年から未来1ヶ月までの日付のみ入力可能にし、金額列には0以上の数値のみ入力できるよう制限します。また、条件付き書式を使用して、残高がマイナスになった場合は赤色で表示し、注意喚起します。収入は青色、支出は赤色で表示することで、視覚的に区別しやすくします。
現金出納帳に便利な関数と自動化機能の活用方法は?
SUM関数、SUMIF関数、VLOOKUP関数などを活用することで、集計作業の自動化と分析機能の充実が図れます。 これらの関数により、手作業を大幅に削減できます。
月次・年次集計の自動計算設定
月末の収支集計を自動化するため、別シートに集計表を作成します。SUMIF関数を使用して、特定期間の収入・支出を自動集計します。例えば、1月の収入合計を求める場合:
=SUMIF(現金出納帳!A:A,”>=2025/1/1″,現金出納帳!C:C)-SUMIF(現金出納帳!A:A,”>2025/1/31″,現金出納帳!C:C)
この式により、日付範囲を指定して自動的に月次集計が可能になります。
科目別集計とピボットテーブルの活用
摘要欄に科目コードを追加することで、科目別の集計が可能になります。例えば、「交通費」「事務用品費」「接待交際費」などの科目を設定し、SUMIF関数で科目別に集計します。さらに高度な分析には、ピボットテーブルを使用します。データ範囲を選択し、「データ」→「ピボットテーブル」から作成することで、多角的な分析が可能になります。
前年同期比較と予算管理機能
経営分析に役立つ前年比較機能も実装できます。前年のデータを別シートに保存し、VLOOKUP関数やINDEX/MATCH関数を使用して、当年と前年の数値を並べて表示します。また、予算管理機能として、月初に予算額を入力し、実績との差異を自動計算する仕組みも構築できます。予実管理により、計画的な資金運用が可能になります。
自動バックアップとデータ保護
Googleスプレッドシートの場合、自動保存機能により常に最新の状態が保存されますが、定期的なバックアップも重要です。Google Apps Script(GAS)を使用して、毎日定時にシートのコピーを作成する自動バックアップシステムを構築できます。
javascript
function dailyBackup() {
var originalSheet = SpreadsheetApp.getActiveSpreadsheet();
var backupFolder = DriveApp.getFolderById(‘バックアップフォルダID’);
var fileName = ‘現金出納帳_バックアップ_’ + new Date().toLocaleDateString();
originalSheet.makeCopy(fileName, backupFolder);}
Google Apps Script(GAS)による現金出納帳の高度な自動化
GASを活用することで、現金出納帳にエンタープライズレベルの機能を実装できます。以下、実務で即活用できる3つの自動化機能を紹介します。
自動残高計算とリアルタイムエラーチェック
手動での残高計算は、ミスが発生しやすく時間もかかります。GASを使用すれば、データ入力と同時に自動的に残高を計算し、異常値を検出できます。
function onEdit(e) {
// 編集されたセルが収入・支出列の場合のみ実行
var range = e.range;
var col = range.getColumn();
var row = range.getRow();
// ヘッダーや前月繰越行は対象外(5行目以降が明細行)
if ((col == 3 || col == 4) && row >= 5) { // C列(収入)またはD列(支出)
calculateBalanceFromRow(row); }}
function calculateBalanceFromRow(startRow) {
var sheet = SpreadsheetApp.getActiveSheet();
var lastRow = sheet.getLastRow();
// 明細行より上を指定された場合に備えてガード
if (startRow < 5) startRow = 5;
for (var i = startRow; i <= lastRow; i++) {
var previousBalance = (i == 5)
? sheet.getRange(“E4”).getValue() // 前月繰越残高(E4)
: sheet.getRange(“E” + (i – 1)).getValue();
var income = sheet.getRange(“C” + i).getValue() || 0;
var expense = sheet.getRange(“D” + i).getValue() || 0;
var balance = previousBalance + income – expense;
sheet.getRange(“E” + i).setValue(balance);
// 残高チェック
if (balance < 0) {
sheet.getRange(“E” + i)
.setBackground(“#ff6b6b”)
.setFontColor(“#ffffff”);
SpreadsheetApp.getUi().alert(‘警告:残高がマイナスです(’ + i + ‘行目)’);
} else {
sheet.getRange(“E” + i)
.setBackground(null)
.setFontColor(null); }}}
このスクリプトは、収入・支出列が編集されるたびに自動的に実行され、その行以降の全ての残高を再計算します。マイナス残高になった場合は、セルを赤色で強調表示し、アラートで通知します。
定期レポートの自動生成と配信
月次・週次のレポートを自動生成し、関係者にメール配信する機能も実装できます。経営者は手動でレポートを作成する手間から解放され、タイムリーに財務状況を把握できます。
function generateMonthlyReport() {
var sheet = SpreadsheetApp.getActiveSheet();
var lastRow = sheet.getLastRow();
var currentMonth = new Date().getMonth() + 1;
var currentYear = new Date().getFullYear();
var monthlyData = {
income: 0,
expense: 0,
transactions: 0,
categories: {}};
// 当月のデータを集計
for (var i = 4; i <= lastRow; i++) {
var date = sheet.getRange(“A” + i).getValue();
if (!date) continue;
var month = date.getMonth() + 1;
var year = date.getFullYear();
if (month == currentMonth && year == currentYear) {
monthlyData.income += sheet.getRange(“C” + i).getValue() || 0;
monthlyData.expense += sheet.getRange(“D” + i).getValue() || 0;
monthlyData.transactions++;
// 科目別集計
var category = sheet.getRange(“G” + i).getValue() || “その他”;
var amount = (sheet.getRange(“D” + i).getValue() || 0);
monthlyData.categories[category] = (monthlyData.categories[category] || 0) + amount;}}
// レポート作成
var report = createHTMLReport(monthlyData, currentYear, currentMonth);
// メール送信
GmailApp.sendEmail(
currentYear + ‘年’ + currentMonth + ‘月 現金出納帳レポート’, ”, {
htmlBody: report,
attachments: [sheet.getParent().getAs(‘application/pdf’)] });}
function createHTMLReport(data, year, month) {
var html = ‘<h2>’ + year + ‘年’ + month + ‘月 現金出納帳サマリー</h2>’;
html += ‘<table border=”1″ style=”border-collapse: collapse;”>’;
html += ‘<tr><th>項目</th><th>金額</th></tr>’;
html += ‘<tr><td>収入合計</td><td>¥’ + data.income.toLocaleString() + ‘</td></tr>’;
html += ‘<tr><td>支出合計</td><td>¥’ + data.expense.toLocaleString() + ‘</td></tr>’;
html += ‘<tr><td>収支</td><td>¥’ + (data.income – data.expense).toLocaleString() + ‘</td></tr>’;
html += ‘<tr><td>取引件数</td><td>’ + data.transactions + ‘件</td></tr>’;
html += ‘</table>’;
html += ‘<h3>支出内訳</h3>’;
html += ‘<table border=”1″ style=”border-collapse: collapse;”>’;
html += ‘<tr><th>科目</th><th>金額</th></tr>’;
for (var category in data.categories) {
html += ‘<tr><td>’ + category + ‘</td><td>¥’ +
data.categories[category].toLocaleString() + ‘</td></tr>’; }
html += ‘</table>’;
return html;}
このスクリプトをトリガーで月初に自動実行するよう設定すれば、毎月自動的にレポートが作成・送信されます。PDFファイルも添付されるため、印刷や保管も容易です。
スマートな科目自動判定システム
摘要欄の内容から自動的に科目を判定し、仕訳作業を効率化する機能も実装可能です。機械学習的なアプローチで、使えば使うほど精度が向上するシステムも構築できます。
function autoCategorizeByCashBook() {
var sheet = SpreadsheetApp.getActiveSheet();
var lastRow = sheet.getLastRow();
// 科目判定ルール(優先順位順)
var rules = [
{keywords: [‘売上’, ‘入金’, ‘販売’], category: ‘売上高’, type: ‘income’},
{keywords: [‘家賃’, ‘レント’, ‘賃料’], category: ‘地代家賃’, type: ‘expense’},
{keywords: [‘電気’, ‘ガス’, ‘水道’], category: ‘水道光熱費’, type: ‘expense’},
{keywords: [‘給与’, ‘給料’, ‘賞与’], category: ‘人件費’, type: ‘expense’},
{keywords: [‘交通費’, ‘タクシー’, ‘電車’, ‘バス’], category: ‘旅費交通費’, type: ‘expense’},
{keywords: [‘会議’, ‘ミーティング’], category: ‘会議費’, type: ‘expense’},
{keywords: [‘接待’, ‘懇親’], category: ‘接待交際費’, type: ‘expense’}];
// 学習データから追加ルールを生成(なければ空配列を返す)
var learnedRules = getLearnedRules();
rules = rules.concat(learnedRules);
// 4行目以降を明細として科目自動判定
for (var i = 4; i <= lastRow; i++) {
var description = sheet.getRange(“B” + i).getValue(); // 摘要
var category = sheet.getRange(“G” + i).getValue(); // 科目
// 既に科目が設定されている場合はスキップ
if (category) continue;
// 摘要から科目を推定
var detectedCategory = detectCategory(description, rules);
if (detectedCategory) {
sheet.getRange(“G” + i).setValue(detectedCategory);
sheet.getRange(“G” + i).setBackground(“#e8f5e9”);}}}
function detectCategory(description, rules) {
if (!description) return null;
var descLower = description.toLowerCase();
for (var i = 0; i < rules.length; i++) {
var rule = rules[i];
for (var j = 0; j < rule.keywords.length; j++) {
// キーワードは日本語中心なので toLowerCase の影響はほぼ無し
if (descLower.indexOf(rule.keywords[j]) !== -1) {
return rule.category;}}}
return null;}
// 学習データからルールを読み込む簡易版(必要に応じて拡張)
function getLearnedRules() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var
この自動科目判定システムは、キーワードベースでの判定に加え、ユーザーの修正履歴から学習する機能も備えています。使い続けることで、各事業所特有の摘要パターンも自動判定できるようになります。
これらのGAS機能を組み合わせることで、単なる記録ツールだった現金出納帳が、インテリジェントな財務管理システムへと進化します。プログラミング経験が少ない方でも、提供されたコードをコピー&ペーストし、必要な部分だけカスタマイズすることで、すぐに活用を始められます。
現金出納帳作成時のトラブルシューティングは?
現金出納帳の運用では、計算式のエラー、残高不一致、データ消失などの問題が発生することがあります。 これらの対処法を解説します。
計算式エラーの原因と修正方法
残高計算でエラーが発生する主な原因は、空白セルや文字列の混入です。IFERROR関数を使用して、エラー時の表示を制御します。
=IFERROR(E4+C5-D5,”エラー:数値を確認してください”)
また、SUM関数を使用する際は、範囲指定を明確にし、不要なセルを含まないよう注意します。循環参照エラーが発生した場合は、計算式の参照関係を見直し、論理的な流れに修正します。
残高不一致の調査手順
実際の現金と帳簿残高が一致しない場合、体系的な調査が必要です。まず、直近の一致していた日付を特定し、それ以降の取引を一件ずつ確認します。入力漏れ、金額の誤入力、収入と支出の区分誤りなどをチェックします。フィルター機能を使用して、特定期間や金額範囲で絞り込むことで、効率的に原因を特定できます。
データ復旧とバージョン管理
誤ってデータを削除した場合の復旧方法を把握しておくことが重要です。Googleスプレッドシートでは、「ファイル」→「変更履歴」→「変更履歴を表示」から、過去のバージョンを確認・復元できます。重要な変更を行う前には、「ファイル」→「コピーを作成」でバックアップを取ることを習慣化します。定期的な外部バックアップも併用し、万全の体制を整えます。
スプレッドシートで作る現金出納帳で金銭管理を実現
スプレッドシートで現金出納帳を作成することで、手書きの帳簿から脱却し、効率的で正確な現金管理が可能になります。本記事で紹介した作成手順と自動計算機能を活用すれば、日々の記帳作業が大幅に簡素化されます。
業種や規模に応じたカスタマイズを行い、内部統制を意識した運用ルールを確立することで、税務調査にも対応できる信頼性の高い帳簿が完成します。まずは基本的な構成から始めて、徐々に機能を追加していくことをお勧めします。デジタル化により、経営判断に必要な情報をリアルタイムで把握し、健全な資金管理を実現しましょう。
この記事をお読みの方におすすめのガイド5選【部署別紹介】
最後に、この記事をお読みの方によく活用いただいている人気の資料・ガイドを紹介します。すべて無料ですので、ぜひお気軽にご活用ください。
経理担当者向け
①Excel関数集 32選まとめブック
経理担当者の方をはじめ、ビジネスパーソンが知っておきたい便利なExcel関数集を初級~上級までギュッと網羅。新人社員の研修用などにもお使いいただけます。Google スプレッドシートならではの関数もご紹介しています。
②勘定科目・仕訳辞典(税理士監修)
勘定科目・仕訳に関する基本知識、および各勘定科目の仕訳例を具体的かつ網羅的にまとめた、50ページを超えるガイドを無料で提供しております。お手元における保存版としてでだけでなく、従業員への印刷・配布用としてもぜひご活用ください。
人事労務担当者向け
①入社・退職・異動の手続きガイドブック
書類の回収・作成・提出など手間のかかる入社・退職・異動(昇給・昇格、転勤)の手続き。
最新の制度をもとに、よくある質問やチェックポイントを交えながら、各手続きに必要な情報をまとめた人気のガイドですす。
②社会保険・労働保険の手続きガイド
企業において社会保険および労働保険の加入・喪失手続きは必ず発生し、手続きを誤れば保険事故が発生した際に従業員が不利益を被る可能性があります。
各保険の基本的な手続き方法を入社・退職・異動のシーン別にギュッとまとめた分かりやすいガイドです。
総務・法務担当者向け
契約書ひな形まとめ30選
業務委託契約書や工事請負契約書…など各種契約書や、誓約書、念書・覚書、承諾書・通知書…など、使用頻度の高い30個のテンプレートをまとめた、無料で使えるひな形パックです。
※ 掲載している情報は記事更新時点のものです。
※本サイトは、法律的またはその他のアドバイスの提供を目的としたものではありません。当社は本サイトの記載内容(テンプレートを含む)の正確性、妥当性の確保に努めておりますが、ご利用にあたっては、個別の事情を適宜専門家にご相談いただくなど、ご自身の判断でご利用ください。
関連記事
スプレッドシートで半角数字のみ入力可能にするには?
Googleスプレッドシートでデータ入力を半角数字のみに制限することは、データの一貫性を保ち、計算エラーを防ぐために重要な設定です。本記事では、スプレッドシートで半角数字だけを入力可能にする方法を解説します。 スプレッドシートで半角数字のみ…
詳しくみるスプレッドシートで画像がずれるのはなぜ?対策まで解説
Googleスプレッドシートで画像を挿入した際、行や列の操作をすると画像の位置がずれてしまい、レイアウトが崩れる問題は多くのユーザーを悩ませています。製品カタログ、報告書、マニュアル作成などで画像を多用する場合、この問題は作業効率を大きく低…
詳しくみるスプレッドシートでシフト表を作るには?基本設計から自動化まで実践的な作成手順を解説
Googleスプレッドシートでシフト表を作成することで、クラウド上での共有、リアルタイムでの更新、スマホからの確認などスムーズに対応できます。Excelと比べて共有や同時編集の運用が簡単なのがメリットです。 本記事では、実用的なシフト表の作…
詳しくみるスプレッドシートでヘッダーとフッターを設定するには?印刷時の表示カスタマイズから削除まで解説
Googleスプレッドシートのヘッダーとフッターは、印刷時やPDF出力時に各ページの上部と下部に表示される重要な要素です。ページ番号、日付、ファイル名、会社名などを自動的に挿入でき、プロフェッショナルな文書作成に欠かせません。 本記事では、…
詳しくみるスプレッドシートの通知設定はどうやる?条件付き通知からGoogle Chat連携まで徹底解説
スプレッドシートで重要な変更があったとき、リアルタイムで知りたいと思ったことはありませんか?Googleスプレッドシート(Google Sheets)の通知機能を活用すれば、データの更新や変更を即座に把握できます。 本記事では、基本的な通知…
詳しくみるスプレッドシートで日報を作成するには?テンプレート作成から自動化まで完全解説
Googleスプレッドシート(Google Sheets)を活用した日報システムは、従来の紙やメール形式の日報と比較して、リアルタイムでの情報共有、データの蓄積と分析、業務の可視化において圧倒的な優位性を持ちます。クラウドベースの特性により…
詳しくみる



