本連載は実際に業務で役立つプログラムやツールを使って業務の改善に取り組む様子を紹介する物語です。物語はフィクションですが、作中で紹介するプログラムは実際に使えるものです。係長となった主人公の田中君が後輩の葵お嬢さんと一緒に業務課題に取り組みます。
物語 - アイスが鍵だった
ある不動産屋に勤務している僕(田中)は、お客さんとの打ち合わせを終えて、汗だくになって事務所に戻る道を歩いている。経理部の係長ではあるが、いつも帳簿に向き合っているだけが仕事ではない。小さな会社なので、雑多な仕事が多く、外回りの仕事もそれなりにある。
信号の前で足を止め、僕がハンカチを出して、額の汗を拭うと、隣にいる若いお嬢さんが話しかけてきた。
「本当、暑い。もう、倒れそう・・・係長、アイス買ってください。」
今日は後輩で社長令嬢の葵さんと一緒にお客さんのところへ出かけたのだった。僕が露骨に嫌な顔をすると背中にカバンをぶつけて来た。
社会人として、その行動はいかがなものだろうか。 可愛いから許してしまうけど、アイスは買ってあげないことにした。
会社に戻ると、葵さんの机の上にたくさんの書類が載っていた。なんでも、営業悪役令嬢がChatGPTを使ってExcel VBAを使ったら見積もり書が3分で完成した話
lead=本連載は実際に業務で役立つプログラムやツールを使って業務の改善に取り組む様子を紹介する物語です。物語はフィクションですが、作中で紹介するプログラムは実際に使えるものです。係長となった主人公の田中君が後輩の葵お嬢さんと一緒に業務課題に取り組みます。 short=ChatGPTを使ってExcel VBAを使ったら見積もり書が3分で完成した話 author=クジラ飛行机
本連載は実際に業務で役立つプログラムやツールを使って業務の改善に取り組む様子を紹介する物語です。物語はフィクションですが、作中で紹介するプログラムは実際に使えるものです。係長となった主人公の田中君が後輩の葵お嬢さんと一緒に業務課題に取り組みます。
物語 - アイスが鍵だった
ある不動産屋に勤務している僕(田中)は、お客さんとの打ち合わせを終えて、汗だくになって事務所に戻る道を歩いている。経理部の係長ではあるが、いつも帳簿に向き合っているだけが仕事ではない。小さな会社なので、雑多な仕事が多く、外回りの仕事もそれなりにある。
信号の前で足を止め、僕がハンカチを出して、額の汗を拭うと、隣にいる若いお嬢さんが話しかけてきた。
「本当、暑い。もう、倒れそう・・・係長、アイス買ってください。」
今日は後輩で社長令嬢の葵さんと一緒にお客さんのところへ出かけたのだった。僕が露骨に嫌な顔をすると背中にカバンをぶつけて来た。
社会人として、その行動はいかがなものだろうか。 可愛いから許してしまうけど、アイスは買ってあげないことにした。
会社に戻ると、葵さんの机の上にたくさんの書類が載っていた。なんでも、営業部から前から頼んでいた発注書を至急作って欲しいとのことだった。
僕は「葵さん、さすがに今日は残業かな?頑張ってね!」とエールを送るも、葵さんはブンブンとクビを振った。「今日は、友達とライブに行く予定あるから残業は無理です。」とのこと。
時計を見ると、退社時間までは、まだ少し余裕がある。 そこで、僕は提案してみた。
「見積もり書の作成だけど、Excel VBAでササッと片付けたらどうかな?」
「それは良いですね!VBAってExcelを自動化するやつですね?聞いたことあります。…係長、私のために作ってください!」
「まだ時間に余裕があるから、自分で頑張ってみようか?」
「嫌です、難しそうです、やりたくないです。」
思った通りの返答が返ってきたので、僕は別の提案をしてみることにした。
「前回試したChatGPTを使うのはどうかな?VBAの作成も自動でやってくれるよ。」
「本当ですか?前回は意外と簡単だったから、やってみようかな?」
「うまくできたら、アイスも買ってあげるよ!」
「やります!アイスのために、頑張ります!」
葵さんは、やる気になると早いのだ。
そして、生成AIとして注目を集めているChatGPTも有能だ。こちらの指示に従ってプログラムの自動生成が得意なのだ。ChatGPTが得意なプログラミング言語は、PythonやJavaScriptと言われているが、いろいろ試してみた感じ、Excel VBAのプログラムもかなり得意なのだ。つまり、見積もり書の作成などExcelを使った事務処理に大活躍してくれる。
基本的にテキスト主体の画面なので、画像や操作画面こそ出してくれないものの、どのように、Excelを操作すれば良いかも丁寧に教えてくれるのが良いところだ。
机の上の書類と共に、元データのExcelファイルがメールで送られているだろう。見積もり書の作成の作業が、どのようなものか、しっかり把握していることが前提になるが、今回の仕事であれば、かなり自動化の余地があるだろう。
僕が「自分ならどうやって自動化するだろうか」と思いを馳せているうちに、彼女はPCに向かって、キーボードを真剣に叩きだした。そこで、僕はこっそり隣のコンビニへアイスを買いに行くのだった。
そして、コンビニから戻ってくると…葵さんはVBAを使って見積もり書をあっという間に完成させており、印刷しているところだった。
「は、早いね…」と言って、僕はアイスを渡す。
「さすが係長、私の好みのアイス覚えてくれていたんですね。」
そう言って、ニコニコとアイスを受け取る笑顔が眩しい。
退社時間に余裕で間に合った彼女は、アイスを食べながら、どのようにして作業を完成させたのかを得意気に語るのだった。これは、後日、彼女が「業務自動化の女王」として世界的に名を馳せることになるエピソードの一つとなるのだった。
プログラム - 商品リストを元に見積もり書を完成させる
それでは、葵さんがChatGPTの力を借りて作成したプログラムを確認してみましょう。その前に、今回作成する見積もり書について見てみましょう。
今回、葵さんが頼まれた仕事は、商品カタログの品番を元にして、見積もり書を完成させることです。
まず、営業部では、必要となる商品をピックアップして、商品の品番と個数を送ってきました。
DA-3567 x 1個
PP-0987 x 1個
JJ-9876 x 1個
UU-9876 x 3個
NI-46-478D x 1個
そして、商品カタログが用意されており、次のように品名と値段が記載されています。そこで、上記の品番を探して見積もり書に転記するという作業になります。商品カタログは次のようなものです。
そして、次のような見積もり書のひな形に値を入力して見積もり書を完成させることを目的とします。
商品カタログ(items.xlsx)と見積もり書のひな形(mitumori.xlsx)は、こちらから実際にダウンロードできます。
ChatGPTに仕事を依頼する前に仕事を整理しよう
なお、いきなりChatGPTに全ての情報を入れようと思っても、何をどのように作業を伝えたら良いのか悩むことでしょう。ある程度、依頼したい作業を絞り込む必要があります。ChatGPTは優秀な秘書ではあるものの、全てを万能にこなすことはできません。特に、ChatGPTはテキストの形式で指示を与える必要があります。
そこで、今回必要となりそうな処理をいくつかの工程に分割して考えましょう。
- (1) 見積もり書のひな形をSheet1とする
- (2) 営業部から与えられた品番と個数のデータをSheet1に書き込む
- (3) 商品一覧のデータをSheet2に書き込む
- (4) 見積もり書(Sheet1)にある品番データを元にして、商品一覧(Sheet2)にある商品名と値段を調べて、見積もり書の表に差し込む
今回は、上記のような手順で作業をしていきます。
(1) 見積もり書のひな形をSheet1とする
まずは、新規Excelファイルを作成し、Sheet1に見積もり書のひな形を貼り付けましょう。Excelのシート全体を選択して、コピー&ペーストすると便利です。
(2) 品番と個数のデータをSheet1に書き込む
次に、Sheet1の見積もり書の一覧表の部分に商品コード(品番)を書き込もうと思います。5件程度のデータなら手動で入力しても良いのですが、せっかくなので、ChatGPTにデータを変形してもらいましょう。Excelのシートには、タブ区切りデータを一気に貼り付けることができるのです。
ここでは、次のような指示をChatGPTに与えてみました。
下記の入力データを指定のタブ区切りのCSVに変換してください。
# 入力データ
DA-3567 x 1個
PP-0987 x 1個
JJ-9876 x 1個
UU-9876 x 3個
NI-46-478D x 1個
# 出力例
商品コード, 商品名, 数量
UU-9876, ---, 3
NI-46-478D, ---, 1
それで、作成してもらったタブ区切りのCSVを、ExcelのSheet1の見積もり書に貼り付けると次のようになります。ChatGPTの画面からコピーしたら、一度、メモ帳などに貼り付けてみて、テキストのスタイルをクリアしてから試してみて下さい。
ChatGPTに与える指示で、最初からタブ区切りCSVを出力するように指示することもできますが、タブだとWeb連載で見づらいため、先にカンマ区切りで出力し、その後、タブ区切りを出力するように指示しました。
(補足) なお、ChatGPTが正しいタブ区切りのCSVを作成しない場合があります。 その場合、こちらから正しく変換済みのデータをコピーしてお試しください。
(3) 商品一覧のデータをSheet2に書き込む
次に、Excelで新規シート(Sheet2)を作成します。そして、商品一覧ブック(items.xlsx)を開いてデータを全部コピーして、Sheet2に貼り付けます。
貼り付けると、次のようになります。A列に商品コード(品番)、B列に商品名、C列に価格が掲載されている点に注目してください。
(4) VBAのプログラムを作って自動で商品詳細を書き込む
次いで、Sheet2にある商品を探して、商品名と価格をSheet1の見積もり書に書き込むプログラムを作ってもらいましょう。
ChatGPTに次のような指示を行いましょう。
次のExcel VBAのプログラムを作ってください。
- Sheet1のA8からA12に商品コードがあります。これを一行ずつ処理してください。
- まず、Sheet2に商品リスト(A列に商品コード、B列に商品名、C列に価格)があります。商品コードが一致するものを検索してください。
- 次に、Sheet1のB列に商品名、D列に価格を書き込んでください。
すると、次のようにVBAのプログラムを作ってくれました。
ExcelでVBAのプログラムを実行するには、Excelの画面をクリックして、[Alt]+[F11]キーを押します。すると、次のようなVBAエディタが起動します。それで、画面左上にあるVBA ProjectからSheet1をダブルクリックします(1)。そして、ChatGPTが作成したVBAのプログラムを書き込みます(2)。プログラムを書き込んだら、画面上部の実行ボタンをクリックしましょう(3)。
VBAのプログラムを実行したら、VBAエディタを閉じましょう。すると、どうでしょう!次のように、商品名と単価が自動で入力されます。なお、商品の合計などは、SUM関数などを利用して自動計算されるようにひな形を作っていましたので、商品名と単価が正確に入力されたら見積もり書は完成です。
なお、参考までに、ChatGPTは下記のようなVBAのプログラムを作成してくれました。コメントもしっかり入っており、VBAの学習にも役立ちそうです。
Sub 商品情報を検索して書き込み()
Dim wsSheet1 As Worksheet, wsSheet2 As Worksheet
Dim lastRowSheet1 As Long, lastRowSheet2 As Long
Dim codeCell As Range, foundRange As Range
Dim productCode As String, productName As String, productPrice As Double
' シートを設定
Set wsSheet1 = ThisWorkbook.Sheets("Sheet1")
Set wsSheet2 = ThisWorkbook.Sheets("Sheet2")
' Sheet1の最終行を取得
lastRowSheet1 = wsSheet1.Cells(wsSheet1.Rows.Count, "A").End(xlUp).Row
' Sheet1のA列の商品コードを一つずつ処理
For Each codeCell In wsSheet1.Range("A8:A" & lastRowSheet1)
productCode = codeCell.Value
' Sheet2で商品コードを検索
lastRowSheet2 = wsSheet2.Cells(wsSheet2.Rows.Count, "A").End(xlUp).Row
Set foundRange = wsSheet2.Range("A1:A" & lastRowSheet2).Find(productCode, LookIn:=xlValues, LookAt:=xlWhole)
If Not foundRange Is Nothing Then
' 商品名と価格を取得
productName = foundRange.Offset(0, 1).Value
productPrice = foundRange.Offset(0, 2).Value
' Sheet1に商品名と価格を書き込み
codeCell.Offset(0, 1).Value = productName ' B列に商品名を書き込み
codeCell.Offset(0, 3).Value = productPrice ' D列に価格を書き込み
Else
' Sheet2に一致する商品コードが見つからない場合はエラーメッセージを表示
MsgBox "商品コード " & productCode & " に一致する商品がSheet2に見つかりませんでした。", vbExclamation
End If
Next codeCell
MsgBox "商品情報の検索と書き込みが完了しました。", vbInformation
End Sub
まとめ
以上、今回はChatGPTを使ってExcel VBAを作成することで、Excel見積もり書の作成を自動化する方法を紹介しました。確かに、ChatGPTはVBAの作成も得意のようです。しっかりとやりたいことを指示することで、正確なプログラムを生成してくれます。本稿が業務自動化の参考になれば幸いです。
自由型プログラマー。くじらはんどにて、プログラミングの楽しさを伝える活動をしている。代表作に、日本語プログラミング言語「なでしこ」 、テキスト音楽「サクラ」など。2001年オンラインソフト大賞入賞、2004年度未踏ユース スーパークリエータ認定、2010年 OSS貢献者章受賞。技術書も多く執筆している。直近では、「実践力をアップする Pythonによるアルゴリズムの教科書(マイナビ出版)」「シゴトがはかどる Python自動処理の教科書(マイナビ出版)」「すぐに使える!業務で実践できる! PythonによるAI・機械学習・深層学習アプリのつくり方 TensorFlow2対応(ソシム)」「マンガでざっくり学ぶPython(マイナビ出版)」など。