見出し画像

生成AIでExcel集計を楽にしてみる


ただデータを入力して、前日分を加算するよくあるExcelファイル

こんなExcelファイルがあるとします。処理自体はとても単純で、前日の繰り越し分に当日の収入分を加算していくだけなのですが、入力項目が多く、1日20-30分ほどかかっていますが、途中電話があったり顧客対応があると作業が中断され、さらに時間がかかるなど結構な手間でした。
巷にはこのようなExcelファイルが溢れています。

セル結合もバリバリ。良い子は真似してはいけません

今まではExcel職人たちが修正していたのですが、生成AIの登場で状況は一変しました。なにせVBAコードまで作ってくれるのです。

目的を決めて業務を楽に

今回もExcel業務をChatGPTを使って楽にしていきます。先ず目的ですが、当日分のシートを作り、当日分の金額を前日繰り越し分に加算していく処理をボタン一つでできるようにします。

業務でExcelを使っている企業は本当に多いので、一つ一つの効果は僅かでもExcel処理を自動化、セミオート化していけば全社的には大きな削減効果が見込めます。

空いた時間をどうするかといったデザイン設計が経営陣には必要かも知れません。そのためには効果がない業務やシキタリをなくすといったことが求められるので、えらい人たちは働かなくてよいのでこのような無駄な処理をなくしたり、働きやすい環境を整えたり、あと間違ったら代わりに頭を下げてもらいたいです。

さて、ボタンを押したら以下の処理を一連で行いためにプロンプトを用意します。

ChatGPTにはファイルやタブなども明記して、やりたいことを箇条書きで記載すると伝わりやすいです。プロでもないのでプロンプトは洗練されたいないこと甚だしいのですが、Excel自動化にあたって以下3つの点を意識しています。

プロンプト

#目的
#ファイルの場所
#どのような処理をしたいのか

今回は異なるファイルや、フォルダを指定する必要がなかったので、データを消してExcelファイルをChatGPTにインポート後

#目的
翌日分のシートを作成し、前日分のデータを取込後、本日分の収入と支出の計算

#処理
サイトの一番右のシートをコピーして末尾へ移動
シートの名前を翌日分(MM/DD)に修正
土日はスキップ

#データ転記処理
前日繰越高の列3行目から10行名(K3:K10)には、一番右のシートから一つ前のシートの差引残高(P3:P10)の値を転記
..
※コピーする内容毎に上記プロンプト記載

#ボタン追加
新しく作成したシートにボタンの追加と上記Subプロシージャの設定


これで何回かエラーがでるので、エラー文とエラーがでている箇所をそのままChatGPTに貼り付けて、なんかエラー出てるん。。と記入すれば修正してくれます。

Sub CopySheetRenameAndSetupButton()
    Dim ws As Worksheet
    Dim newWs As Worksheet
    Dim prevWs As Worksheet
    Dim oldDate As Date
    Dim newDate As Date
    Dim A As String
    Dim newName As String
    Dim button As Shape
    
    ' 最後のシートを選択し、名前を記録
    Set ws = ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
    A = ws.Name
    
    ' シートをコピーして末尾に配置し、新しいシートを選択
    ws.Copy After:=ws
    Set newWs = ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
    
    ' 新しいシートの名前を翌日の名前に変更(土日を除く)
    oldDate = DateSerial(Year(Date), Left(A, 2), Right(A, 2))
    newDate = oldDate + 1
    Do While Weekday(newDate) = 1 Or Weekday(newDate) = 7
        newDate = newDate + 1
    Loop
    newName = Format(newDate, "MMDD")
    newWs.Name = newName
    
    ' 最後のシートの一つ前のシートを選択
    Set prevWs = ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count - 1)
    
    ' 新しいシート内の特定のセルの数式を更新
    '(詳細なセル更新のコードは省略し、元のコードをそのまま使用)
    ' ...

    ' CN8セルに新しいシートの名前から日付を設定(月日のみ)
    newWs.Range("CN8").Value = Left(newName, 2) & "月" & Right(newName, 2) & "日"
    
    ' ボタンのコピーと配置
    ThisWorkbook.Sheets("0930").Shapes("Button 2").Copy
    With newWs
        .Paste
        Set button = .Shapes(.Shapes.Count)
        button.Name = "NewButton"
        button.Top = 9.75
        button.Left = 568.5
        button.Width = 78
        button.Height = 38.25
        button.OnAction = "CopySheetRenameAndSetupButton" ' ボタンにこのマクロを割り当て
    End With
    
    ' ボタンテキストの設定
    With newWs.Shapes("NewButton").TextFrame.Characters
        .Text = "収支日計処理"
        With .Font
            .Name = "MS Pゴシック"
            .FontStyle = "標準"
            .Size = 11
        End With
    End With
End Sub

プログラム構文のような考え方さえ押さえておけば、日本語でどんどんプログラムが作れるなんて夢のような世界がきたものです!

今後も色々な生成AIが出てくるとは思いますが、実際の現場で使ってみて業務を楽に、仕事が楽しくなるような記事を書いていきたいと思います。

この記事が気に入ったらサポートをしてみませんか?