ChatGPTに毎週実行しているエクセル作業のマクロを書いてもらって業務短縮を目指す

こんにちは。
デジタルツールを使用して業務改善をしようと悪戦苦闘している小売業従事者です。
今回覚えたてのChatGPTを使って、これまでやりたくても出来なかったエクセルのマクロに挑戦しました。

実際に書いてもらったソースコードがこちらです。
```
Sub VlookupSalesData()
    Dim ws1 As Worksheet ' 実績管理表のワークシート
    Dim ws2 As Worksheet ' 売上実績のCSVファイルのワークシート
    Dim lastRow1 As Long ' 実績管理表の最終行
    Dim lastRow2 As Long ' 売上実績のCSVファイルの最終行
    Dim i As Long
    
    ' シートを指定
    Set ws1 = ThisWorkbook.Sheets("実績管理表") ' "実績管理表" シート名に変更してください
    
    ' CSVファイルを開く
    On Error Resume Next
    Workbooks.Open Filename:=ThisWorkbook.Path & "\売上実績.csv" ' ファイルパスに合わせて変更してください
    On Error GoTo 0
    
    If Workbooks.Count = 0 Then
        MsgBox "売上実績.csv ファイルが見つかりません。ファイルのパスを確認してください。", vbExclamation
        Exit Sub
    End If
    
    Set ws2 = Workbooks("売上実績.csv").Sheets("売上実績") ' シート名に合わせて変更してください
    
    ' 実績管理表の最終行を取得
    lastRow1 = ws1.Cells(ws1.Rows.Count, "A").End(xlUp).Row
    
    ' 売上実績のCSVファイルの最終行を取得
    lastRow2 = ws2.Cells(ws2.Rows.Count, "A").End(xlUp).Row
    
    ' VLOOKUPを実行
    For i = 5 To lastRow1 ' A列の5行目からスタート
        Dim lookupValue As Variant
        lookupValue = ws1.Cells(i, 1).Value
        
        Dim result As Variant
        result = Application.VLookup(lookupValue, ws2.Range("A:B"), 2, False)
        
        ' #N/Aまたは空白を0に置換
        If IsError(result) Then
            ws1.Cells(i, 2).Value = 0
        ElseIf IsEmpty(result) Then
            ws1.Cells(i, 2).Value = 0
        Else
            ws1.Cells(i, 2).Value = result
        End If
    Next i
    
    ' 売上実績のCSVファイルを閉じる
    Workbooks("売上実績.csv").Close SaveChanges:=False ' ファイル名に合わせて変更してください
End Sub
```

## 何故マクロ（VBA)か

私は小売業従事者であることは先に書いた通りですが、今は店頭業務（お店の店員さん）ではなく、裏方的な業務として、倉庫の在庫管理などをしています。
在庫管理のために毎週商品の販売数量と在庫数量をチェックしながら、足りる・足りないまたは多いといった確認をするために、社内データベースから必要なデータを抽出し、手元のエクセルファイルへ転記する業務が非常に多く発生します。週初めの月曜日は1日ほぼデータ収集作業に明け暮れています。
## 過去にチャレンジはしたものの
過去に書籍などでマクロ（VBA)にチャレンジしたことはありましたが、残念ながら挫折・・・
しかし今回こそはChatGPTの手を借りながら！と改めてのチャレンジです！
###いざChatGPT
いざChatGPTにマクロを書いてもらおうと色々質問してみましたが、正直悪戦苦闘でした。
深津式、YouTubeなど色々調べてみましたが、正直自分の手を動かした方が早いんじゃないかと思うくらいうまく行きませんでした。
<font color="Red">**特に1回目のプロンプトが思い通りの回答出ないときに、修正するためのプロンプトは「かみ合わない」と感じ、何度もはじめからやり直しました。**</font>

ChatGPTに出したプロンプトとやり取りは以下の通りです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3485813/be4afe61-df72-1677-3381-5aeaadd01555.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3485813/a01f289a-b8ad-eb4b-8a73-0dcc43161d4d.png)
ChatGPTの回答に合わせてシート名を指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3485813/a4973d53-58b0-6999-7c99-fdf586d07bd3.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3485813/3edf1abb-3c19-c63e-0ae4-1fa7ff90ee36.png)

うまくデータは反映しましたが、#N/Aの表示がじゃまなので、ゼロに置換するように依頼しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3485813/d57ba02c-214a-9898-ef8d-e3fd40c217af.png)
うまく行きましたが、何故か一番上のデータが反映しません。
再度5行目（一番上）にデータが入らないことを伝えてコードの修正を依頼します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3485813/f75f539f-7066-0f6e-ef1b-0f1726c1b500.png)



![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3485813/16b1ea06-f05c-d0af-e800-88a36cd6b37e.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3485813/0cf2a0d1-7c0b-1ec1-12f9-c72332d9e300.png)
ようやくデータ転記が出来ました。
しかし翌週のデータ転記が出来るコードを書いてもらいましたがまだうまく出来ていません。

## 産みの苦しみを乗り越えて
今回書いてもらうことができたマクロは自分の業務の２割くらいで、時間を捻出できたレベルには到達できておりません。しかし組み合わせて行くことで最終全てをマクロ化出来れば30分程度かかっている作業が5分程度に短縮できるかなという手応えです。
今後もChatGPTと仲良くなって実現してきたいと思っています。


## 今後目指していくこと

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3485813/a002861d-702c-004f-2eb2-6dc4dbd15fc9.png)

今回試したことは実際業務からするとほんの一部に過ぎません。
全てのデータの抽出から転記、配信までは概ね毎週1時間半程度の時間を費やしており、この時間をいかに短縮し、分析の時間を捻出するかが到達目標です。
最終到達目標としては並行して学習中のPower Automateと組み合わせしていいとこどりしたいと考えています。