Site cover image

Site icon imageExcelおさるくんのastro-notion-blog

VBA / Python / Notion / AIによる業務効率化とデータサイエンスに関する情報を発信しています!

Post title iconChatGPTの最新モデルGPT-4o!Excelシートのスクショからダミーデータを生成する方法をご紹介します!

Featured image of the post

🔄 アップデート情報

2024年9月12日よりChatGPTの最新モデルとしてOpenAI o1の提供が開始されました!
  • 高度な推論能力を持つように設計されており、特に科学、数学、コーディングの分野で優れたパフォーマンスを発揮します。
  • 応答前に「思考時間」を取るよう訓練されており、複雑な問題に対してより深い分析が可能です。
  • o1-previewo1-miniの2つのモデルがあります。主な違いを以下の表にまとめました。
特徴o1-previewo1-mini
推論能力より高度o1-previewよりやや劣る
処理速度標準より高速
コスト高いo1-previewの約80%
週間利用制限30メッセージ50メッセージ
最大出力トークン数32,768トークン65,536トークン
主な用途高度な技術開発、
研究プロジェクト
小規模プロジェクト、
基本的な自動化タスク
コーディング能力非常に高いo1-previewと同等
リソース消費多い少ない(軽量)
複雑なタスク処理優れているやや劣る
Image in a image block
🎙️
漫才を書かせて比較してみました。テーマは「スターバックス」です。
OpenAI o1
Image in a image block
Image in a image block
GPT-4o
Image in a image block
Image in a image block

比較すると確かにOpenAI o1の方がボケとツッコミの掛け合いが自然でオチまでついて、よりネタが作り込まれている気がします…笑

1️⃣ はじめに

  • 今回は、ChatGPTの最新モデルGPT-4oを利用してスクショした画面からダミーデータを生成する方法を紹介していきます。
  • また、ご質問をいただきましたVBAの実行方法についてもご紹介していきます。
📖
GPT-4o(オムニ)とは?
OpenAIが開発した最新のマルチモーダルAIモデルです。
  • テキスト、音声、画像、映像をシームレスに扱い、自然なテンポでのリアルタイム音声会話が可能になりました。特に、視覚と音声の理解力が際立ち、多言語対応や複雑な対話の要素を理解できるようになったと言われています。
  • GPT-4oの「o」は「omni」を意味し、omniとは全て、あまねくという意味を含み、マルチモーダルとなった新たなGPTと、多言語に対応したことを指す意図が推測されます。
  • さらに、既存モデルや競合モデルを上回る性能でありながら、制限はありますが、無料ユーザーも利用可能となっています。
Image in a image block

  • それでは早速、動画で作成方法を確認していきましょう!

2️⃣ スクショを利用したFew Shotプロンプティング

  • 今回はこちらのExcelファイルのダミーデータを作成します。
Image in a image block

Excelの関数や機能、VBAやPythonといったプログラミングの学習の際にはダミーデータがあると便利です。

  • ダミーデータを生成する際にはFew Shotプロンプティングを用いると希望のデータを生成する確率が上がります。
Image in a image block

  • Few Shotプロンプティングとは出力の形式や具体的な例を提示することで、望む回答をより精度高く取得するためのプロンプトの手法を指します。
📖
Few Shotプロンプティングとは?
graph TD;
    A["Few Shotプロンプティングって何?"] --> B["少ない例で学ぶ方法"]
    A --> C["基本的な手順"]
    
    C --> D["1. 例を選ぶ"]
    C --> E["2. 指示を作る"]
    C --> F["3. 学習させる"]

Few Shotプロンプティングとは「限られたデータ点(例)を使用して、機械学習モデルを訓練する方法」です。

基本的な手順は以下の通りです。

  1. 例を選ぶ

    最初のステップでは、モデルに学習させるための例を選択します。この選択は、モデルが学ぶべきタスクや目標に適切なものである必要があります。


  2. 指示を作る

    次に、選択したデータに基づいてモデルに与える指示(プロンプト)を作成します。この指示はモデルに何をするかを明確に伝えるためのものです。


  3. 学習させる

    最後のステップでは、指示をモデルに入力して、実際にタスクを実行させます。このプロセスを通じて、モデルは提供された少数の例から学習し、関連するタスクを実行する能力を身につけます。

  • 今回は出力例を入れたうえでスクショを撮り、プロンプト代わりに使用します
Image in a image block

こちらのシートに住所のダミーデータを生成、追加していきます。

  • まずはExcelシートをスクリーンショットで撮ります。
Image in a image block

3️⃣ GPT-4oを利用してダミーデータを生成

  • スクリーンショットをChatGPTにアップロードし、プロンプトを記述します。
Image in a image block

  • GPT-4oは画面左上のプルダウンメニューから選択することが可能です。
Image in a image block

  • スクリーンショットをChatGPTにアップロードし、プロンプトを記述します。
🪄
プロンプトの内容
  • 画像の例を参考にダミーデータを生成してください
    実際に存在する地名にしてください。
    それ以降に町名も入れてください。
    番地は適当で結構です。
    47都道府県すべて含めてください。

※動画ではそれ以降の部分の町名が抜けてしまっていましたが、上記のようなプロンプトにすることで町名も出力することが可能です。

Image in a image block

  • 10,000行のデータが出力されました。
Image in a image block

  • 出力されたデータがこちらになります。
Image in a image block

  • こちらのデータを先程のExcelファイルに貼り付けます。
Image in a image block

  • Excelデータを貼り付けました。
Image in a image block

  • こちらのデータに対して、前回の動画で使用したVBAコードを実行してみます。
Image in a image block

  • 前回の動画はこちらからご覧ください。

4️⃣ VBAの実行方法について

  • 前回の動画ではたくさんのコメント、ご質問をいただきました。ありがとうございます!
    Image in a image block

  • ご質問の中にありました、VBAコードの実行方法についても詳しくご説明いたします。
    Image in a image block

1. コードを入力するVBE(Visual Basic Editor)の画面を表示する方法
  • まずはコードを入力するVBE(Visual Basic Editor)の画面を表示する方法をご紹介します。
    Image in a image block

  • Excelのツールバーのメニューから「開発」タブを選び、「Visual Basic」をクリックします。
    Image in a image block

  • もし開発タブが表示されていない場合は、リボンの上で右クリック、リボンのユーザー設定を選択します。
    Image in a image block

  • リボンのユーザー設定が選択されていることが確認できたら、「開発」にチェックマークを入れてOKボタンをクリックします。
    Image in a image block

  • また、ショートカットキーで起動することも可能です。Excelが開いている状態で、キーボードのAlt + F11を押すことで、直接VBEを起動することができます。
    Image in a image block
    Image in a image block

2. VBE(Visual Basic Editor)にコードを貼り付ける方法
  • 次にコードの貼り付け方法をご紹介します。
    Image in a image block

  • VBE画面の、左のプロジェクトウィンドウで現在開いているExcelファイルの「VBAProject (現在のファイル名)」を右クリックし、「挿入」→「標準モジュール」を選択します。
    Image in a image block
    Image in a image block

  • キーボードショートカットで挿入する場合はAlt ➜ I ➜ Mで挿入できます。
    Image in a image block

  • 標準モジュールを削除する場合は削除するモジュールを選択し、右クリックからモジュールの解放を選択します。
    Image in a image block
    Image in a image block

  • 「いいえ」を選択することでモジュールを削除することができます。
    Image in a image block

  • 前回の動画でChatGPTで作成したVBAコードを貼り付けます。
    Image in a image block
    Image in a image block

3. VBAコードの実行方法
  • 最後にコードの実行方法をご紹介します。
    Image in a image block

  • コードを貼り付けたら、エディタの上部にある「実行」ボタン(緑の再生ボタン)をクリックするか、F5キーを押して実行できます。
    Image in a image block

  • 実行したところ一部分割がうまくいっていない行があります。市区町村の文字数に問題があるようです。
    Image in a image block

  • 正規表現のパターンを一部修正します。
    Image in a image block
    Image in a image block

  • 再度F5キーで実行します。
    Image in a image block
    Image in a image block

  • 分割の処理が完了しました。
    Image in a image block

  • 以上で、GPT-4oによるスクリーンショットの画面からダミーデータの生成が完了しました。
    Image in a image block

住所を分割するVBAコード
Option Explicit

Sub SplitAddress()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim i As Long
    Dim address As String
    Dim pattern As String
    Dim regEx As Object
    Dim matches As Object
    
    ' 処理するシートを設定
    Set ws = ThisWorkbook.Sheets("住所") ' シート名を適宜変更してください
    
    ' 最終行を取得
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    
    ' 正規表現パターンを設定
    pattern = "^(.{2,3}都|.{2,3}道|.{2,3}府|.{2,3}県)(.{1,4}市|.{1,3}区|.{2,3}町|.{2,3}村)(.+)$"
    
    ' 正規表現オブジェクトを作成
    Set regEx = CreateObject("VBScript.RegExp")
    regEx.Global = False
    regEx.IgnoreCase = False
    regEx.pattern = pattern
    
    ' 住所を分割してセルに書き込み
    For i = 2 To lastRow
        address = ws.Cells(i, 1).Value
        If regEx.Test(address) Then
            Set matches = regEx.Execute(address)
            ws.Cells(i, 2).Value = matches(0).SubMatches(0) ' 都道府県
            ws.Cells(i, 3).Value = matches(0).SubMatches(1) ' 市区町村
            ws.Cells(i, 4).Value = matches(0).SubMatches(2) ' それ以降
        End If
    Next i
    
    ' メモリを解放
    Set regEx = Nothing
    Set matches = Nothing
End Sub

5️⃣ さいごに

  • 最後までお読みいただきありがとうございます!
  • 今回はGPT-4oを活用したスクリーンショットした画面からダミーデータを生成する方法をご紹介しました。
  • この記事へのご質問やアドバイスがありましたら、ぜひコメントもお待ちしております。
  • またX(Twitter)でもVBA、Pythonに関するアウトプットをしていますので、🔽フォローいただけますと幸いです😆