GhatGPTにVBAコードを作ってもらい勤怠管理表を作った


お疲れさまです。沖縄の大手スーパーで店長をしております。
10月に新店舗を開店させるべく日々奮闘しております。
最近では、日々建設予定地に建物がたっていく様子を見てワクワクしております。
**GhatGPT**の便利さは常日頃から感じており、
社内向けの説明資料などの作成に活用しておりました。
先日、**ChatGPT**で**VBAコード**が作成できることを知り早速試してみました。

## 従業員の勤怠管理が大変
店長業務の主な業務は下記の通りあります。
- [ ] 採用活動
- [ ] 新人教育
- [ ] 営業活動計画
- [ ] 勤怠管理
主な業務の中でもっと時間を要する勤怠管理についてコメントしたいと思います。
店舗規模によって働いている従業員数はそれぞれ異なっており、
**小規模店舗であれば50名程度**
**大型店になると100名〜120名**
毎月勤務計画を毎月20日までに「リシテア」と呼ばれている勤怠管理システムに
担当部署の責任者が人数分打ち込みを行います。
私の担当している店舗の従業員は下記の通りであります。
**総人数　　　　　86名**
農産　　　　　　6名
水産　　　　　　9名
畜産　　　　　　2名
デリカ　　　　  20名
グロッサリー　　3名
デイリーフーズ　3名
早朝品出し　　　12名
レジ　　　　　　15名
非食品　　　　　3名
医薬品コーナー　5名
薬剤士　　　　　3名
調剤事務　　　　5名
日々上記の人数の勤務管理が必要となり、特に勤務開始の毎月21日に個人別勤務計画を確認する事がとても大変。
当店は管理上21日が始業開始日で20日が終了となる　（例）月度であれば7月21日~8月20となる
勤務計画データをリシテアから取り出すと下記通りで必要以上に情報がある。
**勤務計画シート➀**
![勤務計画シート➀.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3819918/709e6eee-c9d3-a6b9-d476-54cbad3944d2.png)
**勤務計画シート②**
![勤務計画②.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3819918/3380e52e-2820-ef9c-3d24-94521831716d.png)
上記のようなデータを毎月21日下記のデータを手作業で加工している。
毎回20分程度の作業を繰り返し行うことで少しが早く加工できるがやっぱり面倒くさい。
マクロで処理できればと思い本も買って勉強しようと思ったが内容が難しく手に負えない状況が続いていた。
**購入した教科書**
![エクセルマクロ&VBA教科書.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3819918/a6479156-ad29-797b-8968-0adb3976e587.jpeg)

## <font color="red">ChatGPTでVBAコードを作成する事に挑戦しました</font>
**作成時の感想**
何度も失敗し諦めかけたが、
ChatGPTを信じ質問し続けることで最後は成功する事ができた。
質問にはすべて丁寧に答えてくれた。
作成して頂いたVBAを入力し、実行ボタンを押してイメージ通りに動いたときは
感動の涙であった。
気づいたら2時間経過していた。
ChatGPTがすごく身近なサポーターに感じた。是非皆さんも試して頂きたい。

## 使用したもの
「GhatGPT」https://chatgpt.com/
　Excel
## 参考にしたもの　
エクセルVBAマクロとは？できることを完璧に学ぶ初心者入門講座
【たった1動画で全てが分かるExcelVBAの教科書】　
　https://www.youtube.com/watch?v=949u36vdN7U
ChatGPTにマクロのコードを教えてもらったら、
 6年間面倒だなと思っていたExcelの作業が3日で解消した
 https://qiita.com/gushisushi/items/650bfc46fe0e1d3b452c
## 初のマクロ完成
https://x.com/ikejyunn400905/status/1815768452730384703


## 成功までの流れ
**１，VBAコード作成してほしいファイルをアップロードする**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3819918/293d0970-948e-c13d-9b09-50f0c28eada1.png)
**２，作成してほしい内容のプロンプトを打ち込む**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3819918/63a31c35-495b-d0dd-bd61-a1972796faca.png)
**３，返答がきた内容**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3819918/123745f6-da72-5757-b2ac-a9113313b74a.png)
**４，VBAコードが作成されコピーしてコードに貼りつけ**

    Sub EditAndCopyData()
    Dim ws As Worksheet
    Dim newWs As Worksheet
    Dim lastRow As Long
    Dim dateColumn As String
    Dim sourceSheetName As String
    Dim destinationSheetName As String

    ' 元のシート名と転記先のシート名を設定
    sourceSheetName = "Sheet1" ' 変更が必要な場合は適宜修正してください
    destinationSheetName = "SortedData"

    ' 元のシートを設定
    Set ws = ThisWorkbook.Sheets(sourceSheetName)

    ' 最終行を取得
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

    ' D列、G列、H列、I列、J列、K列、L列、M列を削除
    ws.Range("D:D,G:G,H:H,I:I,J:J,K:K,L:L,M:M").Delete

    ' 転記先のシートが存在する場合は削除
    On Error Resume Next
    Application.DisplayAlerts = False
    ThisWorkbook.Sheets(destinationSheetName).Delete
    Application.DisplayAlerts = True
    On Error GoTo 0

    ' 新しいシートを作成
    Set newWs = ThisWorkbook.Sheets.Add
    newWs.Name = destinationSheetName

    ' データを新しいシートにコピー
    ws.UsedRange.Copy Destination:=newWs.Range("A1")

    ' 日付列のインデックスを取得 (例: A列が日付列の場合は1)
    dateColumn = 1

    ' データを日付順に並び替え
    newWs.Sort.SortFields.Clear
    newWs.Sort.SortFields.Add Key:=newWs.Cells(2, dateColumn), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With newWs.Sort
        .SetRange newWs.UsedRange
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    End Sub
    
**５，コードに作成して頂いたVBAを貼りつけ「実行（R）」を押す**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3819918/8fe438fd-71d6-2e58-bf18-98ac111e37dc.png)
**６，マクロが動き下記のような指示が自動で実行される**
　指示１　D列、G列、H列、I列、J列、K列、L列、M列は削除
　指示２　日付順に並び変え別のシートに転記する
 **７，見事成功！！　やったぜ！！（実行後のエクセルシート）**
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3819918/85fe33a9-4bae-a6d1-7614-ce9bb4a9d33b.png)
## 苦労したこと
初めからイメージ通りのVBAコードができたわけではありません。
幾度となく失敗を繰り返してイメージ通りのVBAになりました。
最初のころは下記のようなエラーメッセージが頻繁に表示され怒りが増してきました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3819918/3318c8c2-e3d2-23de-3db2-494836be1269.png)　⇐エラーメッセージ
しかし質問し続けました。こんなこと聞いていいのかと思いながらも諦めることなく質問し続けました。
**質問１**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3819918/103c5132-e81c-e2e6-5e65-67bb0524fbfc.png)
**質問２**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3819918/42fb3c76-609e-0426-1523-e07876875393.png)
**質問３**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3819918/0bd93a77-4ca6-fa37-07e9-cf355e64ccc7.png)
**質問４**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3819918/daaeac77-931e-dde3-faa0-29de16c1313c.png)
**<font color="red">質問攻めをしてもChatGPTは嫌がることなく丁寧に答えてくれました。</font>**
**返信文の一例**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3819918/090e4aae-f00a-7f4d-970a-138c17f7974c.png)
**そして嫌がることなく次のVBAを作成してくれました。素晴らしい！！**
**丁寧に手順も添えてくれてまるで先生のようでした**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3819918/3a0abac1-1409-558b-f219-6bc8e479578b.png)
完成したとこは感動し涙がこぼれるほどうれしくなりました。
**最後のコメントも素晴らしい**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3819918/c78a6b43-5322-99fb-e803-5ef08d2323b8.png)

## 最後に
初めてChatGPTを活用してVBAを作成して頂きマクロを動かすことができました。
内容について初級程度のことかもしれませんが、ChatGPTを活用すると今まで以上に
短時間で多くの情報が得られ、イメージ通りの制作物ができました。
 **ChatGPTを使うことで、作成時間を短縮する事が可能となった。**
 VBAコードを制作するは、基礎知識を得なければ実行することはできない。
 しかしながらChatGPTをすることで大幅な時間短縮になった。
 今後、短縮された時間でさらに多くのVBAコードを作成し作業の効率化を図っていきたいと
 考えます。 
今後もチャレンジを続けより高度なマクロを構築したいと考えております。

MAKE・LINE Bot・スプレッドシートを活用して下記の事にチャレンジしたい！！
１，本日の出勤者の確認　
２，出勤時間・退勤時間の確認
３，個人別残業管理

最後まで読んでいただきありがとうございます。