【ChatGPT】にExcelのマクロを書かせてみた。

2023年6月19日月曜日

AI ChatGPT Excel VBA

t f B! P L


前々回、iPadでChatGPTを使ってみたところ、ChatGPTはExcelのマクロをVBAで書き出せることをノリピーは学びました。

▼【ChatGPT】今更だけどiPadで使ってみた。

そこで今回は、ChatGPTに書かせたExcelマクロを実際にExcelで実行させてみたいと思います。
果たして、ChatGPTが書き出したExcelマクロはちゃんと動くのでしょうか?

ChatGPTに書かせたいExcelマクロ

ChatGPTに尋ねる前に、まずは作ってほしいExcelのマクロを事前にリストアップしておきます。

  1. セルA1に入力があった場合、セルB2に「らりるれろ」と入力するマクロ
  2. セルA1に入力があった場合、セルB2に今日の日付を入力するマクロ
  3. 数字が入力されたセルを赤色にするマクロ
  4. A列のセルに入力された数値が100未満の場合は「小さい」、100以上200以下の場合は「ちょうど良い」、201以上の場合は「大きい」と右隣(B列)のセルに返すマクロ
  5. 全てのセルを対象にして、「ChatGPT」もしくは「チャットGPT」と入力された場合にメッセージ(「ChatGPTはOpenAIが開発しています。」)を表示されるマクロ

実用性があるかはともかく、とりあえず上の5つを考えてみました。
(ノリピーは日常生活にて、Excelでマクロを作ることを求められることはほぼほぼないため、実用的なものはどうしても思いつきませんでした…)

ChatGPTが考えたExcelマクロ

それでは、先ほど考えたExcelのマクロをChatGPTに作ってもらいましょう。

1:セルA1に入力があった場合、セルB2に「らりるれろ」と入力するマクロ

そのままChatGPTに尋ねてもChatGPTは返答に困ることでしょうから、会話になるように文章化します。

私はExcelのマクロを作りたいです。セルA1に入力があった場合、セルB2に「らりるれろ」と自動的に入力されるマクロを教えてください。

…と尋ねてみたところ、以下のマクロを書いてくれました。

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$1" Then
        Range("B2").Value = "らりるれろ"
    End If
End Sub

さっそくVBEを起動して、上記のマクロをコピー&ペーストしてみます。
ChatGPTはペーストする場所についても教えてくれていて、目的のブックを右クリックして挿入した「モジュール」にペーストしてほしいとのことです。

ペーストを終え、試しにセルA1に「あ」と入力してみると…


なんということでしょうか!
何の変化も起きず、セルB2は依然空白のままです。

ググって調べてみますと、「Worksheet_Change」のようなWorksheetのイベントプロシージャーは挿入したモジュールではなく、それを実行させたいシート(のコードウィンドウ)に直接書き込むようです。

ChatGPTにも『私はExcelのマクロを作っています。「Worksheet_Change」のようなWorksheetのイベントプロシージャーは、VBE(Visual Basic Editor)のどこに書き込めばいいですか?』と追加で尋ねてみたところ、「すいません、誤解が生じました。」とお詫びした上で同様のことを教えてくれました。

ですので、先ほどのマクロをペーストする場所を変えてみたところ、今度はセルB2に「らりるれろ」と自動的に入力されました。
成功です!


2:セルA1に入力があった場合、セルB2に今日の日付を入力するマクロ

そのままChatGPTに尋ねてもChatGPTは返答に困ることでしょうから(ry

私はExcelのマクロを作りたいです。セルA1に入力があった場合、セルB2に今日の日付を自動的に入力するマクロを教えてください。日付はセルA1に入力があった日にしてください。

…と尋ねてみたところ、以下のマクロを書いてくれました。

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$1" Then
        Range("B2").Value = Date
    End If
End Sub

セルのデフォルトの書式設定が「標準」になっているためシャープで表示されていますが、今回は問題なく動きました。
ChatGPTが指定したマクロを書く場所も問題ありません。


3:数字が入力されたセルを赤色にするマクロ

そのままChatGPTに尋ねてもChatGPTは返答に困るこ(ry

私はExcelのマクロを作りたいです。全てのセルを対象にして、セルに数字が入力された場合にそのセルの色を赤色にするマクロを教えてください。

…と尋ねてみたところ、以下のマクロを書いてくれました。

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim cell As Range
    For Each cell In Target
        If IsNumeric(cell.Value) Then
            cell.Interior.Color = RGB(255, 0, 0) ' 赤色
        End If
    Next cell
End Sub

無事に数字が入力されたセルの背景を赤色にできました。


4:A列のセルに入力された数値が100未満の場合は「小さい」、100以上200以下の場合は「ちょうど良い」、201以上の場合は「大きい」と右隣(B列)のセルに返すマクロ

そのままChatGPTに尋ねてもChatGPTは(ry

私はExcelのマクロを作りたいです。A列にあるセルに数値が入力された場合、その右隣のセルに文字を自動的に入力するマクロを教えてください。自動的に入力される文字は、A列のセルに入力された数値が100未満の場合は「小さい」、100以上200以下の場合は「ちょうど良い」、201以上の場合は「大きい」というようにしてください。

…と尋ねてみたところ、以下のマクロを書いてくれました。

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim cell As Range
    For Each cell In Target
        If Not Intersect(cell, Range("A:A")) Is Nothing And IsNumeric(cell.Value) Then
            Select Case cell.Value
                Case Is < 100
                    cell.Offset(0, 1).Value = "小さい"
                Case 100 To 200
                    cell.Offset(0, 1).Value = "ちょうど良い"
                Case Is > 200
                    cell.Offset(0, 1).Value = "大きい"
            End Select
        End If
    Next cell
End Sub

上記のマクロを実行させてみた結果が下の画像です。
ChatGPTへの依頼文が長くなりましたが、それでも適切なマクロを返してくれています。


5:全てのセルを対象にして、「ChatGPT」もしくは「チャットGPT」と入力された場合にメッセージ(「ChatGPTはOpenAIが開発しています。」)を表示されるマクロ

そのままChatGPTに尋ねても(ry

私はExcelのマクロを作りたいです。全てのセルを対象にして、「ChatGPT」もしくは「チャットGPT」と入力された場合にメッセージを表示させるマクロを教えてください。メッセージの文面は「ChatGPTはOpenAIが開発しています。」にしてください。

…と尋ねてみたところ、以下のマクロを書いてくれました。

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim cell As Range
    For Each cell In Target
        If InStr(1, cell.Value, "ChatGPT", vbTextCompare) > 0 Or InStr(1, cell.Value, "チャットGPT", vbTextCompare) > 0 Then
            MsgBox "ChatGPTはOpenAIが開発しています."
        End If
    Next cell
End Sub

最後のマクロも完璧に書いてもらえました。


まとめ

ChatGPTすごいですね~。
より実用的で複雑なマクロとなるとどうなるかは分かりませんが、簡単なマクロ程度ならば問題なく書けることが確認できました。

実はノリピー、Excelにとある機能を足したくて独学でExcelのマクロを書こうとした過去があります。
しかし、当時のノリピーにVBAは難しすぎて、結局全て手作業で入力するという力技をすることになりました…

あれから数年、今度はChatGPTの助けを借りながら近々再チャレンジしてみようと思います!

自己紹介

自分の写真
お金がないので基本無料ゲームで遊んだり、フリーソフトで頑張っている人物です。/最近、再び読書をするようになりました。SF作品を好んで読みます。/写真を撮影するのが好きです!

このブログを検索

Translate

人気の記事

にほんブログ村に参加しています!

お問い合わせ窓口

名前

メール *

メッセージ *

QooQ