LoginSignup
217
162

ChatGPTにマクロのコードを教えてもらったら、6年間面倒だなと思っていたExcelの作業が3日で解消した

Last updated at Posted at 2023-08-12

お疲れさまです。沖縄でデジタル修行中の惣菜バイヤーです。
先日ChatGPTを勉強しました。
いろいろ会話できるだけだと思ったら、なんとプログラミングのコードとかも教えてくれるということがわかりました。
プログラミングはまだ全然わかりませんが、今回はChatGPTにいろいろ教えてもらって衝撃を受けたのでその記しです。

計画書作成が大変

お惣菜のバイヤーとしての主な業務は、メニュー開発仕入れ在庫管理店舗の売上計画などです。
今回は上記の店舗の売上計画にスポットをあてて進めていきます。
例えば、8月はお盆がありますが(沖縄は本土とは違い旧暦なので旧盆が商機!)、どの店舗がどの商品をどのくらい販売するかをあらかじめ計画します。
その計画に基づいて、仕入れ金額や在庫をどのくらい持っておくかを決めます。
店舗の売上計画を立てるとき、昨年の売上実績をベースに組みます。
この昨年売上実績がなかなか曲者なのです。
会社のシステムでとれる売上データの店舗順と計画書の店舗順がバラバラで、いつも約40店舗分を手動で並び替えていました。下記イメージです。
↓図1(会社のシステムの売上データ)
1コメント.png
↓図2(店舗の計画書)
2コメント.png
それっていつも同じ作業なのでマクロでできないのかなと思いつつも、職場でマクロがわかる人は少ないしみんな忙しいのでなかなか教えてもらえない。
勉強しよう!と買った本も机の中に眠りっぱなし。。。
並び替えなんて15分程度で終わる作業だし「まあいいか」とずっとこの6年間同じ作業を繰り返していました。
しかし、この3日間ChatGPTとともに過ごし、ついに無事並び替えのマクロが完成しました!

今回ChatGPTマクロ両方初めての挑戦でした。
読み進めても頂いても再現性は低いかもしれません。
自分の記録用と、同じ初心者の方になんとなくこんなイメージなのかと知って頂けたら幸いです。
ChatGPTの特性上、同じコードもなかなか出ないため)

使ったもの

ChatGPT
Excel

できたもの

マクロ作成の流れ

①まずはマクロとは何なのかを教えてもらいます。
3コメント.png
ふむふむ、マクロもプログラミングのコードでできているんですね。初めて知りました。
他にもいろいろ質問すると、マクロはVBAのコードというのを使用するらしいです。それさえも知らなかった。(だから買った本にはマクロ&VBAと書かれていたのか!)

②次に、元となるExcelデータ(図1(会社のシステムの売上データ))のいらないところを削除するVBAのコードを教えてもらいます。
5コメント.png
6コメント.png

このとき、ChatGPTに詳しく教えてあげるとちゃんとしたコードを出してくれます

コードを出している様子
※今回使っているコードとは別のものです。イメージとしてご覧ください。

③次にVLOOKUP関数を使うコードを教えてもらいます。
7コメント.png
④最後にこの2つのマクロを同時に実行するコードを教えてもらいます。
8コメント.png

今回YouTubeでエクセル兄さんという方の動画も参考にさせてもらいました
※直接は使っていませんが、動画いくつかあったので勉強になりました

VBAのコード

今回使った(ChatGPTに出してもらった)コードは3つです。
1つできただけでも自分にとっては凄いことですが、2つのコードを組み合わせて仕上げてみました。

Excelの列や行を削除して整理+新規シートにコピーするコード

Sub CopyDataToNewSheet()
    Dim sourceSheet As Worksheet
    Dim newSheet As Worksheet
    Dim lastRow As Long, i As Long, newRow As Long
    
    ' 操作対象のシートを指定
    Set sourceSheet = ThisWorkbook.Sheets("2022-08-12")
    
    ' 新しいシートを作成
    Set newSheet = ThisWorkbook.Sheets.Add(After:=sourceSheet)
    newSheet.Name = "NewSheet" ' 新しいシートの名前を設定
    
    lastRow = sourceSheet.Cells(sourceSheet.Rows.Count, 1).End(xlUp).Row ' 最終行を取得
    
    newRow = 1 ' 新しいシートの行カウンターを初期化
    
    ' データのコピーと条件に合致する行の削除
    For i = 1 To lastRow
        If sourceSheet.Cells(i, 9).Value <> "集計" Then
            newSheet.Cells(newRow, 1).Value = sourceSheet.Cells(i, 1).Value
            newSheet.Cells(newRow, 2).Value = sourceSheet.Cells(i, 4).Value
            newSheet.Cells(newRow, 3).Value = sourceSheet.Cells(i, 9).Value
            newSheet.Cells(newRow, 4).Value = sourceSheet.Cells(i, 10).Value
            newSheet.Cells(newRow, 5).Value = sourceSheet.Cells(i, 14).Value
            newRow = newRow + 1
        End If
    Next i
End Sub

VLOOKUPを使って値を別のシートに返すコード

Sub CopySalesData()
    Dim wsSource As Worksheet
    Dim wsTarget As Worksheet
    Dim lastRow As Long
    Dim i As Long
    
    ' シートを取得
    Set wsSource = ThisWorkbook.Sheets("NewSheet")
    Set wsTarget = ThisWorkbook.Sheets("Sheet1")
    
    ' Sheet1」の最終行を取得
    lastRow = wsTarget.Cells(wsTarget.Rows.Count, "B").End(xlUp).Row
    
    ' データをコピー
    For i = 4 To lastRow
        wsTarget.Cells(i, "D").Formula = "=VLOOKUP($B" & i & ", " & wsSource.Name & "!$C$9:$E$49, 3, FALSE)"
    Next i
End Sub

上記2つを同時に起動させるコード

Sub RunBothMacros()
    MsgBox "CopyDataToNewSheet マクロを実行します。"
    Call CopyDataToNewSheet
    MsgBox "CopySalesData マクロを実行します。"
    Call CopySalesData
    MsgBox "両方のマクロが完了しました。"
End Sub

2つのマクロを実行するだけではなく、メッセージも出してもらいました

それでもChatGPTでできなかったこと

はじめは最強だと思っていたChatGPTも万能ではありませんでした。(自分の聞き方も悪かったと思います)
並び替えも店舗を指定するだけや、同じ質問の中で2つ聞いたりするとエラーが出まくりです。
丁寧にひとつずつ聞いてあげないといけないですね。
↓みたいなことを2日間くらいひたすら繰り返しました。
10コメント.png
21コメント.png
11コメント.png

やってみてと今後の抱負

これまで約15分程かかっていた並び替えの作業が、約1分程度になります。
これが毎月2回程あるので、月にすると30分程度の短縮です。
年間にすると約6時間。1日分まではいきませんがそれでもすごい業務改善です!
今後は今までよりも短い時間でできるようになるので、より細かい計画が立てられると思います。

また、同じ部署には他に4名のバイヤーがいます。
もう少し改良してみんなが使える仕様にすれば、さらに全体の効率改善になります。
次はそこを目指していきたいと思います。
最後までご覧いただきありがとうございました。

※ちゃんとChatGPTにもお礼を伝えました(笑)
image.png

217
162
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
217
162