見出し画像

ChatGPTがあなたをエクセルマスターに導きます!初心者大歓迎、実践ワークショップ

概要

  1. スケジュール確認

  2. 参加者自己紹介・興味関心把握

  3. 機材設定

  4. ChatGPTの活用方法紹介

  5. ChatGPTでExcelマクロを作ってみる 基礎編

  6. ChatGPTでExcelマクロを作ってみる 応用編 個別作成

スケジュール確認

14:10-14:35 基本事項確認
14:35-15:00 個別作成

参加者自己紹介・興味関心把握 一人1分以内

  1. お名前

  2. 所属

  3. ChatGPT使っていますか?

  4. マクロを作った経験はありますか?

機材設定

  1. 資料…GIGA林先生のnote

  2. Excel…開発タブを表示、VBEを使用、マクロ有効ブックで保存

  3. ChatGPT…ログイン・サインアップ



ChatGPTの活用方法紹介


https://openai.com/blog/chatgpt

ChatGPTとは

「ChatGPTは、自然言語処理(Natural Language Processing)というAI技術を使用して人間のように会話を行うことができる人工知能です。特に、このAIはGPT-4というアーキテクチャをベースに作られており、数百GBのテキストデータから学習を行いました。これにより、ChatGPTは多岐にわたる話題について議論したり、質問に答えたりすることができます。

その能力は、幅広い範囲の対話スタイルと題材をカバーしています。そしてその能力は、文章生成、質問応答、文章の要約、翻訳、その他さまざまな言語タスクで見ることができます。これらは人間が通常使用するような自然な言語を用いて行われます。

ただし、ChatGPTは完全に汎用的な知識を持っているわけではなく、また自己意識や感情、主観的な経験もありません。これらの能力は訓練データと設定から学習され、AI自身が理解したり感じたりするわけではないという点を理解することが重要です。

また、私の知識は2021年までの情報をベースにしており、それ以降の最新情報を提供する能力はありません。」*ChatGPTで作成

  • 言語を扱うAI

  • プログラミング言語も扱える

  • 確率的に高いことを生成する

  • →正確でないことを出力してしまうことがある

ChatGPTでできること

  1. 自然な言語での会話: 人間が通常使用するような自然な言語を用いて会話します。

  2. 質問応答: ユーザーからの質問に対して答えを提供します。

  3. 文章生成: 与えられたトピックや指示に基づいてテキストを生成します。

  4. 文章の要約: 長い文章を短く要約します。

  5. 翻訳: 一つの言語から別の言語への翻訳が可能です。

  6. 情報提供: その訓練データベース内の広範な情報を提供します。

  7. テキスト解析: テキストの意味を解析し、それに基づいた結論を導き出します。

  8. レビューと評価: 製品や映画などのレビューや評価を生成することができます。

  9. 教育的ツール: 学習支援や指導のための教育的ツールとして機能します。

  10. クリエイティブな書き込み: 物語、詩、ジョークなど、クリエイティブな書き込みも生成します。

*ChatGPTで作成

本ワークショップでは、プログラミングの代行をしてもらう用途で使う。

ChatGPTでGIGA林が作ったもの紹介

( アレルギーチェックシート )エクセルでアレルギーを自動でチェック

【 汎用型 】漢字 学年別チェッカー

鑑賞カード自動作成ツール

ChatGPTにプログラミングを代行してもらう流れ


これまでのプログラミング
多くのことを学ばなければいけなかった
これからはChatGPTがプログラミングを代行してくれる
ChatGPTは「コンピューターの翻訳者」

Excelマクロの場合

  1. ChatGPTにコードを書いてもらう

  2. ExcelでVBEを開き、ChatGPTが書いたコードを張り付ける

  3. Excelでマクロを実行する

プロンプトのコツ の前に

コツよりも前に…
ChatGPTを使いたいなら、課金してGPT4を使おう!性能が全然違う。
日本語で指示を出すよりも、英語で指示を出す方が精度が上がる。DeepLで翻訳すると上手くできたって話があります。

GPT-4 3-shot accuracy on MMLU across languages (OpenAI 2023)

コーディングプロンプトのコツ6選

  1. 指示は短文 理由…一文が長いとChatGPTが理解しにくい 字数制限がある

  2. 指示を明確にする 例…要約する、翻訳する、コードを書くなど

  3. 「###」のような明確な区切り記号を付ける 理由…マークアップすることで論理構造が明確になる

  4. 超具体的に指示を出す 例…A1からD1の範囲で~、「○○」というシートの~

  5. 「しないことを」を言わず、「すること」を言う 例…×「尋ねないで」〇「尋ねることを避け、○○する」

  6. 「正しい答えを得るために、ステップバイステップで考えてみましょう。」を入れる。 理由…正解率が上がる

Zhou et al.,(2022年)

参考 プロンプトエンジニアリングガイド


GIGA林式コード代行プロンプトテンプレート

###命令書###
あなたは、プロのプログラマーです。
以下の制約条件と機能をもとに、最高のコードを出力してください。

###制約条件###
・エクセルのVBAで記述する。
・マクロの名前は日本語にする。数字は半角にする。名前の先頭は数字にはしない。
・正しい答えを得るために、ステップバイステップで考えてみましょう。

###機能###
[実行したい機能を記載する]

###手順1###
[実行することの手順を具体的に記述すれば、コードの正確性が上がる]

対話で修正しよう

1回で完璧なコードを書いてもらうのは困難。エラーを修正して実現しよう。



ChatGPTでExcelマクロを作ってみる 基礎編 「アレルギーチェッカー作成」

  1. きゅうりアレルギーのチェックをする

  2. 複数食品のチェックができるようにする

  3. 修正は続く

  4. GIGA林式アレルギーチェックマクロ生成プロンプト

1.きゅうりアレルギーのチェックをする

実際にやってみましょう。車輪の再発明になるので、どんどんやってといきましょう。うまくいかなければ、ChatGPTに質問したり、講師にどんどん質問してください。対話を楽しみながらやっていきましょう。

私はきゅうりが苦手なので、きゅうりが給食で出ているかチェックしたいです。ここは卵とかでも構いません。
下のプロンプトをコピーして、ChatGPT(リンクをクリック)に貼り付けます。黒いところの右上にカーソルを合わせると、コピーマークが出てくるのでクリックするだけでコピーができます。

エクセルで、「きゅうり」と記入してあるセルに色をつけるVBAを出力してください。

すると下のようなコードが出力されます。同じコードが出力されるとは限りません。皆さんはどんなコードが出力されましたか?

Sub ColorCucumbers()
    Dim ws As Worksheet
    Dim rng As Range
    Dim cell As Range
    
    ' ワークシートの指定(必要に応じて変更してください)
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    ' 設定する範囲の指定(必要に応じて変更してください)
    Set rng = ws.UsedRange
    
    ' 設定する色の指定(必要に応じて変更してください)
    Dim color As Long
    color = RGB(255, 0, 0) ' 赤色
    
    ' 各セルのチェックと色の設定
    For Each cell In rng
        If InStr(1, cell.Value, "きゅうり") > 0 Then
            cell.Interior.Color = color
        End If
    Next cell
End Sub

コードをコピーして、VBEに貼り付けましょう。
ColorCucumbersマクロを実行してみましょう。
Sheet1のきゅうりが赤色に変わりました。

このコードは下の図のような処理をしています。

エクセルで、「きゅうり」と記入してあるセルに色をつけるVBAを出力してください。

本当は「献立表入力」のシートにある「きゅうり」に色付けをしたいので範囲を具体的に指定します
色も赤だと見にくいので黄色にしましょう。
以下のように修正を依頼しましょう。

シートの名前は「献立表入力」にしてください。範囲はシート全体にしてください。色を黄色に変更してください。

下のようなコードが生成されます。

Sub ColorCucumbers()
    Dim ws As Worksheet
    Dim rng As Range
    Dim cell As Range
    
    ' ワークシートの指定(必要に応じて変更してください)
    Set ws = ThisWorkbook.Sheets("献立表入力")
    
    ' 設定する範囲の指定(必要に応じて変更してください)
    Set rng = ws.UsedRange
    
    ' 設定する色の指定(必要に応じて変更してください)
    Dim color As Long
    color = RGB(255, 255, 0) ' 黄色
    
    ' 各セルのチェックと色の設定
    For Each cell In rng
        If InStr(1, cell.Value, "きゅうり") > 0 Then
            cell.Interior.Color = color
        End If
    Next cell
End Sub

修正したコードでは、ワークシートの名前が「献立表入力」になりました。また、範囲もワークシートの全体に設定されるようになりました。色を黄色に変更するためにRGB(255, 255, 0)という値を使用しています。

2.複数食品のチェックができるようにする

きゅうり以外のものもチェックできるようになると便利ですよね。
「Sheet1」のシートのE5からE10にあるものをチェックするよう依頼しましょう。
まず、Sheet1のE5に「きゅうり」、E6に「ごはん」、E7に「卵」と入力します。

下のプロンプトをコピーして、ChatGPTに貼り付けます。

「きゅうり」ではなく、「Sheet1」のシートのE5からE10にあるものを参照するようにしてください。

ChatGPTは文脈を読み取ってくれるので、修正点だけを伝えます。

Sub ColorCucumbers()
    Dim ws As Worksheet
    Dim rng As Range
    Dim cell As Range
    
    ' ワークシートの指定(必要に応じて変更してください)
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    ' 設定する範囲の指定(必要に応じて変更してください)
    Set rng = ws.Range("E5:E10")
    
    ' 設定する色の指定(必要に応じて変更してください)
    Dim color As Long
    color = RGB(255, 255, 0) ' 黄色
    
    ' 各セルのチェックと色の設定
    For Each cell In rng
        If InStr(1, cell.Value, "きゅうり") > 0 Then
            cell.Interior.Color = color
        End If
    Next cell
End Sub

このコードだと上手く動きません。
コードの手順を確認してみましょう。

「きゅうり」ではなく、「Sheet1」のシートのE5からE10にあるものを参照するようにしてください。

対象範囲を「Sheet1」のE5からE10までのセルに設定してしまっています。「参照する」という言葉が曖昧な指示だったようです。

間違ったらやり直さずに修正点を伝えましょう対話で修正をすることがとても大切です。どこが違うか、どの手順で処理をするかを具体的に伝えます

ちがいます。「Sheet1」のE5からE10を色付けするのではありません。E5からE10にある語句を参照して、「献立表入力」に一致するものがあればそのセルに色を付けてほしいです。
Sub ColorCucumbers()
    Dim ws1 As Worksheet
    Dim ws2 As Worksheet
    Dim rng1 As Range
    Dim rng2 As Range
    Dim cell1 As Range
    Dim cell2 As Range
    
    ' ワークシートの指定(必要に応じて変更してください)
    Set ws1 = ThisWorkbook.Sheets("Sheet1")
    Set ws2 = ThisWorkbook.Sheets("献立表入力")
    
    ' 参照する範囲の指定(必要に応じて変更してください)
    Set rng1 = ws1.Range("E5:E10")
    Set rng2 = ws2.UsedRange
    
    ' 設定する色の指定(必要に応じて変更してください)
    Dim color As Long
    color = RGB(255, 255, 0) ' 黄色
    
    ' 各セルのチェックと色の設定
    For Each cell1 In rng1
        For Each cell2 In rng2
            If InStr(1, cell2.Value, cell1.Value) > 0 Then
                cell2.Interior.Color = color
            End If
        Next cell2
    Next cell1
End Sub

修正後のコードでは、まず「Sheet1」の範囲E5からE10のセルを順に参照し、その値を「献立表入力」の範囲内で検索して一致するセルに色を付けるようになっています。

ちがいます。「Sheet1」のE5からE10を色付けするのではありません。E5からE10にある語句を参照して、「献立表入力」に一致するものがあればそのセルに色を付けてほしいです。

ワークシートの定義と範囲の定義が改善されました。

しかし、「献立表入力」のシート全てに色がついてしまっています。E5~E10に空欄があるとそれを認識していまうのでしょうか。
ChatGPTに質問をして修正してみましょう。

「献立表入力」のシートの全てに色がついてしまっています。なぜでしょうか。
Sub ColorCucumbers()
    Dim ws1 As Worksheet
    Dim ws2 As Worksheet
    Dim rng1 As Range
    Dim rng2 As Range
    Dim cell1 As Range
    Dim cell2 As Range
    
    ' ワークシートの指定(必要に応じて変更してください)
    Set ws1 = ThisWorkbook.Sheets("Sheet1")
    Set ws2 = ThisWorkbook.Sheets("献立表入力")
    
    ' 参照する範囲の指定(必要に応じて変更してください)
    Set rng1 = ws1.Range("E5:E10")
    Set rng2 = ws2.UsedRange
    
    ' 設定する色の指定(必要に応じて変更してください)
    Dim color As Long
    color = RGB(255, 255, 0) ' 黄色
    
    ' 各セルのチェックと色の設定
    For Each cell2 In rng2
        For Each cell1 In rng1
            If cell2.Value = cell1.Value Then
                cell2.Interior.Color = color
                Exit For
            End If
        Next cell1
    Next cell2
End Sub

修正後のコードでは、「Sheet1」の範囲E5からE10のセルの値と「献立表入力」のセルの値を比較し、一致する場合に色を設定しています。完全一致するものに色を付けてくれています。
全てのセルに色が付くことはなくなりました。

3.修正は続く

しかし、まだ問題点があります。
①Sheet1に空欄があると、献立表入力の空欄のセルに色を付けてしまう。
②献立表入力のセルに食品が複数あるとチェックができない。
この点も修正を依頼します。

修正をお願いします。
修正1 Sheet1E5:E10に空欄がある場合は無視をする。
修正2 Sheet1E5:E10にある値が、献立表入力に一つでも含まれているなら、そのセルに色を付ける。
Sub ColorCucumbers()
    Dim ws1 As Worksheet
    Dim ws2 As Worksheet
    Dim rng1 As Range
    Dim rng2 As Range
    Dim cell1 As Range
    Dim cell2 As Range
    
    ' ワークシートの指定(必要に応じて変更してください)
    Set ws1 = ThisWorkbook.Sheets("Sheet1")
    Set ws2 = ThisWorkbook.Sheets("献立表入力")
    
    ' 参照する範囲の指定(必要に応じて変更してください)
    Set rng1 = ws1.Range("E5:E10")
    Set rng2 = ws2.UsedRange
    
    ' 設定する色の指定(必要に応じて変更してください)
    Dim color As Long
    color = RGB(255, 255, 0) ' 黄色
    
    ' 各セルのチェックと色の設定
    For Each cell1 In rng1
        If cell1.Value <> "" Then ' 空欄の場合は無視する
            For Each cell2 In rng2
                If InStr(1, cell2.Value, cell1.Value) > 0 Then
                    cell2.Interior.Color = color
                    Exit For
                End If
            Next cell2
        End If
    Next cell1
End Sub
修正をお願いします。 修正①Sheet1のE5:E10に空欄がある場合は無視をする。 修正②Sheet1のE5:E10にある値が、献立表入力に一つでも含まれているなら、そのセルに色を付ける。

修正①の空欄を無視するは解決ができました。
しかし、アレルギーのチェックが1回しかされていません。修正を依頼しましょう。

色を付けが1回しかされていません。1回で終わらずに指定の語を含むセルを全てに色を付けてください。
Sub ColorCucumbers()
    Dim ws1 As Worksheet
    Dim ws2 As Worksheet
    Dim rng1 As Range
    Dim rng2 As Range
    Dim cell1 As Range
    Dim cell2 As Range
    
    ' ワークシートの指定(必要に応じて変更してください)
    Set ws1 = ThisWorkbook.Sheets("Sheet1")
    Set ws2 = ThisWorkbook.Sheets("献立表入力")
    
    ' 参照する範囲の指定(必要に応じて変更してください)
    Set rng1 = ws1.Range("E5:E10")
    Set rng2 = ws2.UsedRange
    
    ' 設定する色の指定(必要に応じて変更してください)
    Dim color As Long
    color = RGB(255, 255, 0) ' 黄色
    
    ' 各セルのチェックと色の設定
    For Each cell1 In rng1
        If cell1.Value <> "" Then ' 空欄の場合は無視する
            For Each cell2 In rng2
                If InStr(1, cell2.Value, cell1.Value) > 0 Then
                    cell2.Interior.Color = color
                End If
            Next cell2
        End If
    Next cell1
End Sub
色を付けが1回しかされていません。1回で終わらずに指定の語を含むセルを全てに色を付けてください。

これで求めていた複数アレルギーチェックを作ることができました。
コードの手順がすっきりしたことが視覚的にもわかりますね。
お疲れ様でした。

4.GIGA林式アレルギーチェックマクロ生成プロンプトでやってみる

これまでの手順をまとめて、プロンプトを作ってみましょう。
GIGA林式プロンプトを使用してみました。
これまでが上手くいかなかった場合は下のプロンプトを新しいチャットに張り付けてみてください。

###命令書###
あなたは、プロのプログラマーです。
以下の制約条件と機能をもとに、最高のコードを出力してください。

###制約条件###
・エクセルのVBAで記述する。
・マクロの名前は日本語にする。数字は半角にする。名前の先頭は数字にはしない。
・正しい答えを得るために、ステップバイステップで考えてみましょう。

###機能###
指定の語句が含まれているセルの色を黄色にする。
###手順1###
指定の語句は、「Sheet1」のE5:E10に入力されているもの。
###手順2###
E5:E10に空欄があればそれを無視する。
###手順3###
「献立表入力」のシートに指定の語句が含まれていたら、そのセルに色をつける。
###手順4###
「献立表入力」のシートに指定の語句が他にも含まれていたら、それにも色をつける。この手順を全てのセルに繰り返す。
###注意###
「献立表入力」のシートに指定の語句が一つでも含まれていたら色をつける。

ChatGPTでExcelマクロを作ってみる 応用編 個別作成

これからは、ご自分が作りたい機能をChatGPTに依頼してみてください。各種サンプルデータがありますので、ご自由にご活用ください。

GIGA林式コード代行プロンプトテンプレート

###命令書###
あなたは、プロのプログラマーです。
以下の制約条件と機能をもとに、最高のコードを出力してください。

###制約条件###
・エクセルのVBAで記述する。
・マクロの名前は日本語にする。数字は半角にする。名前の先頭は数字にはしない。
・正しい答えを得るために、ステップバイステップで考えてみましょう。

###機能###
[実行したい機能を記載する]

###手順1###
[実行することの手順を具体的に記述すれば、コードの正確性が上がる]

エラーが出たら

修正をしてもらう。

修正してください。「○○」というエラーがでています。

それでも修正されない場合は、コードの手順を確認する。

このコードはどんな手順で処理をしているか教えてください。

機能例

所見ミス判定マクロ
差し込みワークシートマクロ
成績処理マクロ

VBAでできること例

  1. 重複値のハイライト: 指定された列で重複している値を探し出し、それらをハイライトするツール。

  2. 自動ソート: 指定した列を自動的に昇順または降順でソートするツール。

  3. 欠損値の探索: エクセルシート内の欠損値(空のセル)を探し出し、それらをハイライトするツール。

  4. セルの書式設定: 指定した条件に合致するセルの書式を自動的に変更するツール(例えば、特定の値以上の数値を含むセルを赤色にする等)。

  5. データのフィルタリング: 指定した条件に基づいてデータをフィルタリングするツール。

  6. データの分析: 指定した列の数値データに対して基本的な統計分析(平均、中央値、標準偏差等)を行うツール。

  7. 列のリネーム: エクセルシートの列の名前を一括で変更するツール。

  8. シートの一括操作: 複数のエクセルシートに対して一括で操作(例えば、特定の列の削除や特定の書式設定の適用等)を行うツール。

  9. 条件に基づく行の削除: 指定した条件に基づいてエクセルシートの行を削除するツール。

*ChatGPTで作成


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