目次
煩雑なExcel入力業務。うんざりしていませんか?
「Excelの作業をもっと効率化したい…」
「日々の入力作業がホント面倒…」
こう感じている方、多いのではないでしょうか。

私は現在、ChatGPTとExcelマクロを組み合わせたセミナーを定期的に開催しています。
ExcelマクロとはExcelを自動的に動かすためのプログラムのこと。
例えば「毎週の売上データを下にグラフを作る」場合、毎回範囲指定して棒グラフを作成するのはけっこう面倒です。
ですが、マクロを組めばクリック1つで棒グラフを作成することが可能です。
ほかにも社員名簿データを支店ごとにシートを分離したり条件に該当する人のセルを黄色く塗って目立たせたりするのを、やはりクリック1つで行うことも出来ます。
Excelマクロの設定は業務効率化に直結するのです。
ですが、これまでExcelマクロを組むのは相当大変でした。
専用のプログラミング用語を学ぶ必要がありましたし、エラーの修復にも多くの手間とスキルが必要でした。
ですが現在はChatGPTを使うことでChatGPTにマクロのプログラムを組んでもらえるようになりました。

ただ、ChatGPTでマクロのプログラムを組むためには「ロジカルシンキング」や「プログラミングのノウハウ」を知る必要があります。
この部分を基礎から解説するのが私の「ChatGPT×Excelマクロ自動化セミナー」(生成AIフル活用Excel自動化プログラミング講習)。
これまで2回開催しています。
受講なさる方は初心者の方も多いのですが、皆さん一貫して「もっと早く知りたかった!」とおっしゃいます。
なぜかというと、ChatGPTに正しく指示を出せれば、これまで手作業で行っていた「面倒な事務作業」が、自動化できてしまうからです。

セミナーの内容を下に、Googleスプレッドシートの自動化にも挑戦!
さて、これまで私はセミナーを通してExcelマクロを構築する方法をお伝えしてきたわけですが、あるときふと気づきました。
「あれ、このマクロってExcelだけでなく、Googleスプレッドシート(Google Spreadsheet)にも使えるんじゃないか?」
そう気づいたんです。
GoogleスプレッドシートとはGoogleの提供する表計算ソフト。
要は「Google版Excel」と考えるとだいたい正解です。

Excelでマクロが使えるのと同様、Googleスプレッドシートでもマクロ(的な機能)を使うことができるんです!
(正式にはApps Scriptと言います)
ネットやChatGPTで調べながらApps Sciptを組んでいくと、思った通りマクロのような自動化プログラムを組むことが出来ました!
これ、やってみると分かりますが、けっこう楽しいです。
「思ったとおりに動いてくれた!」
そういう感動を味わうことが出来ます。
よくDIYや日曜大工で本棚や犬小屋をつくる人がいますが、あれと同じような感じです。
しかも、ゴミも出なければ材料代も発生しないので経済的でもあります。
自分でプログラミングして何かを作るのってすごく楽しい事に気づきました。
メモアプリにつけていた読書記録を、Googleスプレッドシート化した件。
先日作ったのは読書記録表です。
これまで私はiPhoneやMac標準の「メモ」アプリに読書記録をつけていました。
1つのメモ欄に、日付と読んだ本のタイトルを打ち込んでいくという形です。

この状態でも記録しやすいものの、単なるテキストデータなので打ち込んだ後のデータ活用に難がありました。
もちろん検索したら本のタイトルは出てくるんですけど、これまで読んだトータル冊数や同じ本を何回読んだかなどを分析するのがなかなか難しかったんです。
(1冊ずつカウントしたら冊数は出ますが、同一の本を読んだ回数などを分析するのはなかなか大変です)
なのでこの度、このメモのデータをGoogleスプレッドシート上に移すことにしました。
まずはメモデータをコピーしてスプレッドシート上に貼り付けました。
スプレッドシートに貼ると、それぞれが各行に表示されます。

列を追加してトータル冊数を表示できるようにしました。

これで完成でも良かったのですが、この場合今後は毎回行を2行目に挿入した上、ID番号を追加して日付と本のタイトルを打ち込む必要が出てきます。
これは意外と面倒くさそうです。
なので、このスプレッドシートのシートを2つにし、1枚目のシートで本のタイトルや著者名を入力し、その内容が2枚目のシートに自動反映される形にしようと考えたのです。
ChatGPTにはそれぞれのシートのどのマスに本のタイトルや著者名のデータが来るかを指示し、Apps Sciptの命令文を作ってもらうことにしました。
結果、出来上がったのは次のようなシートです↓

著者名欄に著者の名前、書名欄に本のタイトルを入力し、「登録」をクリックします。
すると入力した内容がシート2の一番上に入力されるようにプログラムを組みました。
実際に打ち込んでみましょう。

シート1(記録欄)に著者名に名前、書名欄に本のタイトルを打ち込みます。
「登録」をクリックすると…。

シート2(記録欄)の2行目に入力した書名・著者名が自動的に反映されました!
と同時に、全体が1行ずつ下にずれる形にプログラムを組んでいるので新たに書いた本のタイトルが常に2行目に表示されるようにしています。
これにより、いちいちスプレッドシートの行を自分で1行増やさなくても楽に本のタイトルを入力できるようになりました!
さらには書名・著者名を入力した日付が自動的に入力されるようになったので日付を打ち込む手間も省くことが出来ました!
こういうプログラミングって、誰かに頼んで作るほどの規模ではないですが、自分の好みで細かく設定できると使い勝手がよくなります。
思ったとおりに動くようになったときの達成感、とても大きい物がありました。
これは十分「趣味」としても楽しいものですし、なにより自分の業務を一気に効率化してくれる可能性も秘めています。
GoogleスプレッドシートのApps Scipt、いじってみると楽しいですよ!
Googleスプレッドシートは「スマホとの相性が最強」
ちなみにここで述べた読書記録のマクロ、Excelでも同様のものを作ることが出来ます。
「だったらExcelマクロでいいんじゃないの?」
そう思う人もいるかも知れませんが、Googleスプレッドシートで作ったほうが良いメリットがあります。
それはスマートフォンとシームレスに連携できる点にあります。

Googleスプレッドシートの場合、スマホの「スプレッドシート」アプリで開くとスマホ上からも操作が可能となります。
読書記録を付ける場合、いちいちパソコンを開いて入力するのは面倒です。
スマホから入力できれば手間もかかりません。
その点でExcelマクロよりもGoogleスプレッドシートで作ったほうが便利であると言えるのです。
おまけに、Googleスプレッドシートの場合 他のユーザーにもデータを共有することができます。
汎用性が非常に高くなるのです。
作ってみたプロンプト例
ちなみに今回作ってみたApps Sciptの命令文(プロンプト)と、このプロンプトと作るためのChatGPTへの指示内容は次のとおりです。
【ChatGPTへの指示内容】
##作ってほしいもの##
Googleスプレッドシートで使う Apps Script を作ってください。
PC でもスマホでも動く「読書記録」用のスクリプトです。
##シート構成##
– シート1:入力用(シート名「入力欄」)
– B2:著者名入力欄
– B3:書名入力欄
– B10:記録実行用のチェックボックス(スマホでの記録用)
– シート2:記録用(シート名「記録欄」)
– A列:ID(2行目=最新、3行目以降=古い)
– B列:記録日
– C列:書名
– D列:著者名
##仕様##
1. 入力シート(シート1)の B2(著者名)と B3(書名)を読み取る。
2. PC では「記録ボタン」から実行したい。
3. スマホでは「B10 のチェックボックスが ON になったら自動実行」する onEdit(e) を使いたい。
4. 記録シート(シート2)に次の動作を行う:
– 2行目に新規行を挿入して過去データを下にずらす
– A2 に ID を付与(A3 が数字なら A3+1、空なら 1)
– B2 に今日の日付を yyyy/MM/dd 形式で入れる
– C2 に書名
– D2 に著者名
5. 記録後は入力シートの B2・B3 を空にする。
6. スマホ用に、チェックボックス(B10)は実行後、自動で OFF に戻す。
##出力フォーマット##
– コード全体をそのままコピペすれば動く形で書いてください。
– シート名とセル位置はコード冒頭で定数として指定できる形にしてください。
##目的##
PC(ボタン)・スマホ(チェックボックス)のどちらでも使える完全自動記録スクリプトを生成するためのプロンプトです。
【ChatGPTが作成したApps Scipt】
/ 設定(ここだけ環境に合わせて変えればOK) /
const INPUT_SHEET_NAME = ‘入力欄’; // 著者名・書名を入力するシート
const RECORD_SHEET_NAME = ‘記録欄’; // 記録を保存するシートconst INPUT_AUTHOR_CELL = ‘B2’; // 著者名入力セル
const INPUT_TITLE_CELL = ‘B3’; // 書名入力セル
const INPUT_CHECKBOX_CELL = ‘B10’; // スマホ用チェックボックスセルconst RECORD_ID_COLUMN = 1; // 記録欄シートのID列(A列 = 1)
const RECORD_DATE_COLUMN = 2; // 日付列(B列)
const RECORD_TITLE_COLUMN = 3; // 書名列(C列)
const RECORD_AUTHOR_COLUMN = 4; // 著者名列(D列)const DATE_FORMAT = ‘yyyy/MM/dd’; // 記録日に使う日付フォーマット
/ 設定ここまで //**
- PC用:ボタンに割り当てるメイン関数
- スプレッドシート上の「記録ボタン」にこの関数を割り当ててください。
*/
function recordReading() {
recordReadingCore();
}/**
- スマホ用:チェックボックスONで自動実行
- B10のチェックボックスがTRUEになったときに実行する。
*/
function onEdit(e) {
// イベントオブジェクトがない場合は何もしない
if (!e) return; const range = e.range;
const sheet = range.getSheet(); // 編集されたシートが入力欄シートでない場合は何もしない
if (sheet.getName() !== INPUT_SHEET_NAME) return; // 編集されたセルが設定したチェックボックスセルでない場合は何もしない
if (range.getA1Notation() !== INPUT_CHECKBOX_CELL) return; // チェックボックスがON(TRUE)のときだけ実行
const newValue = e.value;
if (newValue === ‘TRUE’) {
recordReadingCore();
}
}/**
PCボタン/スマホチェックボックス両方から呼び出す。
*/
function recordReadingCore() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const inputSheet = ss.getSheetByName(INPUT_SHEET_NAME);
const recordSheet = ss.getSheetByName(RECORD_SHEET_NAME); if (!inputSheet || !recordSheet) {
SpreadsheetApp.getUi().alert(‘シート名の設定が正しいか確認してください。’);
return;
} // 入力欄から著者名と書名を取得
const author = inputSheet.getRange(INPUT_AUTHOR_CELL).getValue();
const title = inputSheet.getRange(INPUT_TITLE_CELL).getValue(); // どちらかが未入力の場合はエラー表示して終了
if (!author || !title) {
SpreadsheetApp.getUi().alert(‘著者名と書名の両方を入力してください。’);
// チェックボックスがONのままならOFFに戻しておく
inputSheet.getRange(INPUT_CHECKBOX_CELL).setValue(false);
return;
} // 記録欄シートの2行目に新規行を挿入し、過去データを下にずらす
// (1行目は見出し行の想定)
recordSheet.insertRowBefore(2); // IDを決定:A3 に数字があればそれ+1、なければ 1
const a3Value = recordSheet.getRange(3, RECORD_ID_COLUMN).getValue();
let newId = 1;
const parsed = parseInt(a3Value, 10);
if (!isNaN(parsed)) {
newId = parsed + 1;
} // 今日の日付を指定フォーマットで取得
const today = new Date();
const formattedDate = Utilities.formatDate(
today,
Session.getScriptTimeZone(),
DATE_FORMAT
); // 2行目にデータを書き込み
recordSheet.getRange(2, RECORD_ID_COLUMN).setValue(newId); // ID
recordSheet.getRange(2, RECORD_DATE_COLUMN).setValue(formattedDate); // 記録日
recordSheet.getRange(2, RECORD_TITLE_COLUMN).setValue(title); // 書名
recordSheet.getRange(2, RECORD_AUTHOR_COLUMN).setValue(author); // 著者名 // 入力欄の著者名・書名をクリア
inputSheet.getRange(INPUT_AUTHOR_CELL).clearContent();
inputSheet.getRange(INPUT_TITLE_CELL).clearContent(); // スマホ用チェックボックスをOFFに戻す
inputSheet.getRange(INPUT_CHECKBOX_CELL).setValue(false);
}
どうでしょう?
Apps Sciptのほうは「何がなんだかわからない」内容ですが、これをGoogleスプレッドシートのメニューから「拡張機能→Apps Scipt」を開き、そこに貼り付けると使えるようになります。
(厳密には実行ボタンの設定が必要になります)
自分でプログラムを一から書くのは大変でも、ChatGPTを使うと自分の使いたい機能を自分で設定することができます。
非常に面白い時代だなあ、と実感しているところです。
最大のハードルは「どう聞けばいいか」問題
ただ、こういう取り組みをするには「ChatGPTにどう質問したら良いかわからない」「そもそもどうやってApps Sciptを設定したら良いかわからない」という課題があります。
どうしてもこういうプログラミングって「最初の一歩」が一番難しいのです。
だからこそ「ChatGPT×Excelマクロ自動化セミナー」を開講することで、最初の一歩を踏み出せるお手伝いをしているわけです。

(Excelマクロとありますが、Excelマクロについて勉強すればGoogleスプレッドシート用のApps Scriptも使えるようになります)
このセミナーは、初心者の方/プログラム知識ゼロからでもマクロのプログラミングを組む方法を基礎からお伝えしています。
またその人の業務に合わせた自動化プログラムの作り方やChatGPTへの正しい指示出しの仕方も学ぶことが出来ます。
受講者の方からも、
「ChatGPTの活用方法が具体的に分かった」
「自社業務を効率化するためのヒントを得られた」
と好評の声をいただいています。
「ChatGPTをもっと業務に活かしたい!」
「マクロのプログラムの作り方を知りたい!」
という方、ぜひ「生成AIフル活用 Excel自動化プログラミング講習」にお越しくださいませ!

























Excelの面倒な入力作業も、ChatGPTとマクロを組み合わせれば自動化できます。以前はプログラミング知識が必要でしたが、今はChatGPTに正しく指示すれば初心者でも作成可能です。Excelマクロ同様、Googleスプレッドシートのマクロ機能であるApps Scriptを使うと同様の自動化ができます。Googleスプレッドシートならスマホにも連携できるのでさらに操作性が高まりますよ!