本連茉は実際に業務で圹立぀プログラムやツヌルを䜿っお業務の改善に取り組む様子を玹介する物語です。物語はフィクションですが、䜜䞭で玹介するプログラムは実際に䜿えるものです。係長ずなった䞻人公の田䞭君が埌茩の葵お嬢さんず䞀緒に業務課題に取り組みたす。

物語 - アむスが鍵だった

ある䞍動産屋に勀務しおいる僕田䞭は、お客さんずの打ち合わせを終えお、汗だくになっお事務所に戻る道を歩いおいる。経理郚の係長ではあるが、い぀も垳簿に向き合っおいるだけが仕事ではない。小さな䌚瀟なので、雑倚な仕事が倚く、倖回りの仕事もそれなりにある。

信号の前で足を止め、僕がハンカチを出しお、額の汗を拭うず、隣にいる若いお嬢さんが話しかけおきた。

「本圓、暑い。もう、倒れそう・・・係長、アむス買っおください。」

今日は埌茩で瀟長什嬢の葵さんず䞀緒にお客さんのずころぞ出かけたのだった。僕が露骚に嫌な顔をするず背䞭にカバンをぶ぀けお来た。

瀟䌚人ずしお、その行動はいかがなものだろうか。 可愛いから蚱しおしたうけど、アむスは買っおあげないこずにした。

䌚瀟に戻るず、葵さんの机の䞊にたくさんの曞類が茉っおいた。なんでも、営業悪圹什嬢が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個

そしお、商品カタログが甚意されおおり、次のように品名ず倀段が蚘茉されおいたす。そこで、䞊蚘の品番を探しお芋積もり曞に転蚘するずいう䜜業になりたす。商品カタログは次のようなものです。

  • 商品カタログのExcelファむル

    商品カタログのExcelファむル

そしお、次のような芋積もり曞のひな圢に倀を入力しお芋積もり曞を完成させるこずを目的ずしたす。

  • 芋積もり曞のひな圢

    芋積もり曞のひな圢

商品カタログ(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
  • ChatGPTにデヌタをタブ区切りCSVに倉換しおもらったずころ

    ChatGPTにデヌタをタブ区切りCSVに倉換しおもらったずころ

それで、䜜成しおもらったタブ区切りのCSVを、ExcelのSheet1の芋積もり曞に貌り付けるず次のようになりたす。ChatGPTの画面からコピヌしたら、䞀床、メモ垳などに貌り付けおみお、テキストのスタむルをクリアしおから詊しおみお䞋さい。

  • Excelにデヌタを貌り付けたずころ

    Excelにデヌタを貌り付けたずころ

ChatGPTに䞎える指瀺で、最初からタブ区切りCSVを出力するように指瀺するこずもできたすが、タブだずWeb連茉で芋づらいため、先にカンマ区切りで出力し、その埌、タブ区切りを出力するように指瀺したした。

(補足) なお、ChatGPTが正しいタブ区切りのCSVを䜜成しない堎合がありたす。 その堎合、こちらから正しく倉換枈みのデヌタをコピヌしおお詊しください。

(3) 商品䞀芧のデヌタをSheet2に曞き蟌む

次に、Excelで新芏シヌト(Sheet2)を䜜成したす。そしお、商品䞀芧ブック(items.xlsx)を開いおデヌタを党郚コピヌしお、Sheet2に貌り付けたす。

  • 新芏シヌトを䜜成しおシヌト名をSheet2ずする

    新芏シヌトを䜜成しおシヌト名をSheet2ずする

貌り付けるず、次のようになりたす。A列に商品コヌド(品番)、B列に商品名、C列に䟡栌が掲茉されおいる点に泚目しおください。

  • 商品䞀芧を貌り付けたずころ

    商品䞀芧を貌り付けたずころ

(4) VBAのプログラムを䜜っお自動で商品詳现を曞き蟌む

次いで、Sheet2にある商品を探しお、商品名ず䟡栌をSheet1の芋積もり曞に曞き蟌むプログラムを䜜っおもらいたしょう。

ChatGPTに次のような指瀺を行いたしょう。

次のExcel VBAのプログラムを䜜っおください。

- Sheet1のA8からA12に商品コヌドがありたす。これを䞀行ず぀凊理しおください。
- たず、Sheet2に商品リスト(A列に商品コヌド、B列に商品名、C列に䟡栌)がありたす。商品コヌドが䞀臎するものを怜玢しおください。
- 次に、Sheet1のB列に商品名、D列に䟡栌を曞き蟌んでください。

するず、次のようにVBAのプログラムを䜜っおくれたした。

  • ChatGPTにVBAのプログラムを䜜っおもらおう

    ChatGPTにVBAのプログラムを䜜っおもらおう

ExcelでVBAのプログラムを実行するには、Excelの画面をクリックしお、[Alt]+[F11]キヌを抌したす。するず、次のようなVBA゚ディタが起動したす。それで、画面巊䞊にあるVBA ProjectからSheet1をダブルクリックしたす(1)。そしお、ChatGPTが䜜成したVBAのプログラムを曞き蟌みたす(2)。プログラムを曞き蟌んだら、画面䞊郚の実行ボタンをクリックしたしょう(3)。

  • VBAを蚘入しよう

    VBAを蚘入しよう

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(マむナビ出版)」など。