スケジュール管理業務が多くて確認作業が大変😫
みなさんこんにちは!
私は店舗のデバイス管理業務を担当しているヤットと申します。
業務としては、全国にある店舗へITデバイスに関連する資材を手配したり、システムの更新プログラムの配布を行ったりしています。
しかし、私の職場は全国に500以上もの店舗を展開しており、
全店舗へ資材の手配やシステムの更新プログラムを配布作業などは一日にまとめて行わず、スケジュールを組み、決めた日程で手配を行っております。
配布スケジュールを管理する際にExcelを使用しているのですが、500店舗以上もあることからどこまで手配が完了しているのか、把握するのがパッと見ただけでは難しいのが現状です……
今回やりたいこと!!
現在私が店舗への配布に使用している管理表がこちらです。
(一部、情報を伏せさせていただいております)
対応が完了したかどうかはE列のステータスで管理をしております。
見ていただいた通り、手配したかどうか確認をするのに真っ白だと時間がかかってしまい、
大変めんどくさいですし、抜け漏れもでてしまいます。
そこで今回、私はマクロを使用してステータスが完了になっている場合、グレーアウトさせてパッとみただけで完了していることがわかるような仕組みにしたいと思います!
今回使用するツール
- ChatGPT
- Excel
マクロにはVBAコードと呼ばれるコードが必要になります。
ですが、私はコードの知識がありません……😓😓
そこで今回、私がマクロ作成に使用するのが世界中で使用されるようになったChatGPTです。
ChatGPTはコード知識がなくてもコードを作成できるという優れものになります。
それり利用してマクロを作成していきたいと思います😊
<ChatGPTについて知りたい方はこちらを参照ください>
マクロが完成しました!
マクロボタンをクリックするとステータスが完了になっている行は
グレーアウトされるようになり、パッと見ただけでどの店舗が完了しているの
一目でわかりやすくなりました。✨✨
(マクロ導入前)
- ステータスを完了にする
- 完了になっている行を範囲選択する
- グレーに色を変更する
1行にかかる時間 約2秒
(マクロ導入後)
- ステータスを完了にする
- マクロボタンを押す
1行にかかる時間 約1秒
実際にかかる時間は対応する店舗数に比例します。
(今まで)1店舗約2秒 ⇒ 500店舗約1000秒[約16分]
(導入後)1店舗約1秒 ⇒ 500店舗約500秒 [約8分]
完成したExcelがこちら
事前準備
- マクロ作成必要な知識を身につけよう
マクロはExcelに標準で搭載されているVisual Basicを利用することで使用することができます。
下記手順を参考に開けることを確認おいてください。
[開発タブ] > [Visual Basic] > Visual Basic内にて[挿入] >[標準モジュール]
実装手順
ChatGPTにVBAコードを作成してもらうために、やりたいことをプロンプトを送ることで
実装に必要なコードを作成してくれます。
プロンプトとは、
ChatGPTに質問するときの文章を指します。
例)
- 今日の天気をおしえてください。
- ○○を行うためのコードを作成してください。
はじめのプロンプト
Excelデータで、ステータスが完了になっている行はグレーアウトになるように
するマクロを作成してもらいます。
使用したプロンプトがこちら
実際にできたコード
先ほどのプロンプトからChatGPTが作成してくれたVBAコードがこちらになります。
Sub グレーアウト処理()
Dim ws As Worksheet
Dim rng As Range
Dim cell As Range
' シートの指定(シート名を適切なものに変更)
Set ws = ThisWorkbook.Sheets("配信スケジュール")
' データの範囲を指定(E列のデータがある範囲)
Set rng = ws.Range("E:E")
' データの各セルに対して処理
For Each cell In rng.Cells
' 「ステータス」が「完了」の場合にグレーアウト
If cell.Value = "完了" Then
cell.EntireRow.Interior.Color = RGB(192, 192, 192) ' グレーアウトの色(灰色)を指定
End If
Next cell
End Sub
上記のVBAコードをマクロのモジュール内にペーストします。
これだけでマクロが完成です!!
実際にマクロを実行してみると、ステータスが完了になっている行が
グレーアウトされました🥳🥳
かなりこれだけでも楽になります!!
でも、これだけだと完了ステータスを一旦未完了に戻したときに
グレーアウトになったままになってしまうので、
次のプロンプトを送りました。
最終のプロンプト
完了以外のステータスの時は塗りつぶしなしにしてもらうように
コードを作成してもらいます。
使用したプロンプトがこちら
最終的に出来上がったコード
Sub 色変更マクロ()
Dim ws As Worksheet
Dim rng As Range
Dim cell As Range
' シートの指定(シート名を適切なものに変更)
Set ws = ThisWorkbook.Sheets("配信スケジュール")
' データの範囲を指定(E列のデータがある範囲)
Set rng = ws.Range("E:E")
' データの各セルに対して処理
For Each cell In rng.Cells
' 「完了」の場合は行をグレーアウト
If cell.Value = "完了" Then
cell.EntireRow.Interior.Color = RGB(192, 192, 192) ' グレーアウトの色を指定
Else
cell.EntireRow.Interior.ColorIndex = xlColorIndexNone ' 背景色を白に戻す
End If
Next cell
End Sub
上記で作成されたコードをマクロのモジュールに上書きします。
実行を行ったところ、完成ステータス以外の行は、
グレーアウトが外れることに成功しました。🎉🎉
今回、追加で行ったができなかったこと
今回できなかったことがあります
それはマクロを自動で実行する仕組みすることです。
ステータスを完了にするだけでグレーアウトになるようにすれば、都度ユーザーがマクロを実行するという手間が省けていいのだが、今回実装することができませんでした。
ChatGPTにコードを生成もらったのですが、モジュールに当てはめても一向に動きがありません。
コードを入力しても動かないことを伝えても、こうしたら動くと返事が返ってくるばかりでした……😭😭
おそらく、プロンプト作成に問題がありChatGPTが正常に動作するコードを作成できなかったのかもしれません。
プロンプト/コードを書いておくので、気になる方はこちらを参照ください
ChatGPTに送ったプロンプト
試してみて動かなかったコード
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ws As Worksheet
Dim rng As Range
Dim cell As Range
' シートの指定(シート名を適切なものに変更)
Set ws = ThisWorkbook.Sheets("配信スケジュール")
' データの範囲を指定(E列のデータがある範囲)
Set rng = ws.Range("E:E")
' 変更されたセルがE列にある場合の処理
If Not Intersect(Target, rng) Is Nothing Then
Application.EnableEvents = False ' イベントを一時的に無効化
' データの各セルに対して処理
For Each cell In Intersect(Target, rng).Cells
' 「ステータス」が「完了」の場合にグレーアウト
If cell.Value = "完了" Then
cell.EntireRow.Interior.Color = RGB(192, 192, 192) ' グレーアウトの色(灰色)を指定
Else
cell.EntireRow.Interior.ColorIndex = xlNone ' グレーアウト解除
End If
Next cell
Application.EnableEvents = True ' イベントを有効化
End If
End Sub
完成してみての感想
今回初めてコードを使ってのシステム作成をやってみましたが、
めんどくさいと思っていた作業を短縮できるので、かなり便利だと感じました。
実際にコードを作成したのはChatGPTがやってくれたんですけね😝😝
(なんでいままでやってこなかったのかと後悔……😔)
ChatGPTの感想
ChatGPTは一度送ったプロンプトを記憶しているため、追加で質問するときは
一度おくったプロンプトを省略することができるのが、とても使いやすく感じました。
ただ、プロンプトがあやふやだと自分が実装したいことは異なる回答をもらうことになるため、
実装をしたいことを言語化する能力が問われると感じました。
最後に
今までは、システムを作成するときは人が一からコード考えるという作業がありましたが、これからの時代はChatGPTが土台のコードを考えて人はその土台に付け足していくという時代が来るのだと実感しました。
そのため、我々が今後求められる能力というのはアイデアを生み出す力とそれを実行するための言語化能力なのだと考えます。
私もその力を身に着けていこうと思います。