🔄 アップデート情報
2024年9月12日よりChatGPTの最新モデルとしてOpenAI o1の提供が開始されました!
- 高度な推論能力を持つように設計されており、特に科学、数学、コーディングの分野で優れたパフォーマンスを発揮します。
- 応答前に「思考時間」を取るよう訓練されており、複雑な問題に対してより深い分析が可能です。
o1-preview
とo1-mini
の2つのモデルがあります。主な違いを以下の表にまとめました。
特徴 | o1-preview | o1-mini |
---|---|---|
推論能力 | より高度 | o1-previewよりやや劣る |
処理速度 | 標準 | より高速 |
コスト | 高い | o1-previewの約80% |
週間利用制限 | 30メッセージ | 50メッセージ |
最大出力トークン数 | 32,768トークン | 65,536トークン |
主な用途 | 高度な技術開発、 研究プロジェクト | 小規模プロジェクト、 基本的な自動化タスク |
コーディング能力 | 非常に高い | o1-previewと同等 |
リソース消費 | 多い | 少ない(軽量) |
複雑なタスク処理 | 優れている | やや劣る |
2024年5月13日よりChatGPTのGPT-4oモデルの提供が開始されました!
- GPT-4o(オムニ)ではテキスト、音声、画像、映像をシームレスに扱い、自然なテンポでのリアルタイム音声会話が可能になりました。
- 特に、視覚と音声の理解力が際立ち、多言語対応や複雑な対話の要素を理解できるようになったと言われています。
- さらに、既存モデルや競合モデルを上回る性能でありながら、制限はありますが、無料ユーザーも利用可能となっています。
2024年4月1日よりChatGPTがログイン不要で利用できるようになりました!
- 「まずはお試しください」をクリックすると利用できます。
- 米OpenAIは4月1日、ログインやアカウント作成なしでもChatGPTが利用可能になったと発表しました。
- これまでは、ChatGPTの利用にはアカウント作成が必須でしたが、今回の更新でアカウントを作成せずにChatGPTを試せるようになりました。ただし、モデルはGPT3.5、過去のチャット履歴の保存や確認、チャットの共有、音声対話やカスタム指示などの追加機能は利用できないようです。
- 早速試してみましたが、GPT3.5モデルでも十分な精度だと感じました!
試しにマクロの記録をリファクタリングしてみました!
- ChatGPTのモデルGPT-4oを使ったスクショVBA動画の視聴回数が20,000回を突破しました!
たくさんのコメント、ご質問もいただきました。ありがとうございます!
ChatGPTの最新モデルGPT-4oが登場!ExcelシートのスクリーンショットからVBAコードを生成する方法をご紹介します!
ご質問の中にありました、VBAコードの実行方法について詳しくご説明いたします。
1. コードを入力するVBE(Visual Basic Editor)の画面を表示する方法
- まずはコードを入力するVBE(Visual Basic Editor)の画面を表示する方法をご紹介します。
- Excelのツールバーのメニューから「開発」タブを選び、「Visual Basic」をクリックします。
- もし開発タブが表示されていない場合は、リボンの上で右クリック、リボンのユーザー設定を選択します。
- リボンのユーザー設定が選択されていることが確認できたら、「開発」にチェックマークを入れてOKボタンをクリックします。
- また、ショートカットキーで起動することも可能です。Excelが開いている状態で、キーボードの
Alt + F11
を押すことで、直接VBEを起動することができます。
2. VBE(Visual Basic Editor)にコードを貼り付ける方法
- 次にコードの貼り付け方法をご紹介します。
- VBE画面の、左のプロジェクトウィンドウで現在開いているExcelファイルの「VBAProject (現在のファイル名)」を右クリックし、「挿入」→「標準モジュール」を選択します。
- キーボードショートカットで挿入する場合は
Alt ➜ I ➜ Mで挿入できます。
- 標準モジュールを削除する場合は削除するモジュールを選択し、右クリックからモジュールの解放を選択します。
- 「いいえ」を選択することでモジュールを削除することができます。
- 本記事でご紹介したChatGPTで作成したVBAコードを貼り付けます。
3. VBAコードの実行方法
- 最後にコードの実行方法をご紹介します。
- コードを貼り付けたら、エディタの上部にある「実行」ボタン(緑の再生ボタン)をクリックするか、F5キーを押して実行できます。
1️⃣ はじめに
- 今回は、ChatGPT Plusの新機能として2023/9/25より提供が開始されたGPT-4Vを利用してスクショした画面からVBAコードを生成する方法を紹介していきます。
OpenAIが開発した最新のマルチモーダルAIモデルです。GPT-4Vの「V」は「ビジョン(Vision)」を意味し、テキストだけでなく画像も理解し、高度な認識や生成タスクを行えます。従来のGPT-4に画像解析と音声出力機能が追加され、テキスト、画像、音声の入力・出力が可能で、様々な活用が期待されています。
- それでは早速、動画で生成方法を確認していきましょう!
2️⃣ GPT-4Vの利用方法について
- GPT-4Vは現在は有料版であるChatGPT Plusのユーザーに提供されています。GPT-4のボタンからDefaultを選択して使用します。
3️⃣ スクリーンショットからVBAコードの作成
1. 列のピボット解除を行うVBAコードの生成
- まずはこちらのExcelファイルの列のピボット解除を行うVBAを作成します。
横持ちのデータを縦持ちのデータに変換する作業のことです。
横持ちのデータ : 行と列にそれぞれ異なる項目が配置され、データが横方向に蓄積されていきます。一般的に Excel などによくみられる形で、人が見るには視認性が高いですがデータ分析では扱いづらい形式です。
縦持ちのデータ : 列に配置された項目に対して、データが縦方向に蓄積されていきます。一般的にリレーショナルデータベース(RDB)の構築やデータ分析の処理は縦持ちのデータが適しているといわれます。
- VBAで処理をしたい変更前のExcelデータをスクリーンショットで撮り、スクリーンショットをアップロードし、プロンプトを記述します。
- 添付のExcel画像の横持ちデータを縦持ちデータに、ピボット解除を行うためのVBAコードを記述してください。
- VBAコードが出力されていきます。
- VBEに貼り付けて、F5キーでコードを実行します。
- 列のピボット解除が完了しました。
列のピボット解除のVBAコード
Option Explicit
Sub ConvertToVerticalData()
Dim LastRow As Long
Dim LastCol As Integer
Dim OutputRow As Long
Dim i As Long, j As Integer
Dim ws As Worksheet
Dim wsOutput As Worksheet
' 元のデータが存在するワークシートを設定
Set ws = ThisWorkbook.Sheets("Sheet1") 'シート名を必要に応じて変更してください
' 出力用のワークシートを設定
Set wsOutput = ThisWorkbook.Sheets.Add
wsOutput.Name = "Output"
' 元データの最終行と最終列を取得
LastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
LastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
' 出力データのヘッダーを設定
wsOutput.Cells(1, 1).Value = ws.Cells(1, 1).Value
wsOutput.Cells(1, 2).Value = "カテゴリ"
wsOutput.Cells(1, 3).Value = "値"
' 出力データの最初の行を設定
OutputRow = 2
' 元データをループして出力データを作成
For i = 2 To LastRow
For j = 2 To LastCol
wsOutput.Cells(OutputRow, 1).Value = ws.Cells(i, 1).Value
wsOutput.Cells(OutputRow, 2).Value = ws.Cells(1, j).Value
wsOutput.Cells(OutputRow, 3).Value = ws.Cells(i, j).Value
OutputRow = OutputRow + 1
Next j
Next i
End Sub
2. 日付の表記ゆれを修正するVBAコードの生成
- 続いて日付の表記ゆれのExcelデータを修正するVBAコードを作成します。
同じ日付を異なるフォーマットやスタイルで記述することを指します。日付の表記ゆれは、文書の整合性を低下させたり、データの解析や処理を困難にする原因となることがあります。
- こちらのExcelデータを使用します。
- VBAで処理をしたい変更前のExcelデータをスクリーンショットで撮ります。
- スクリーンショットをアップロードし、プロンプトを記述します。
添付のExcel画像のA列の表記ゆれを修正し、B列に出力するためのVBAコードを記述してください。
- VBAコードが出力されていきます。
- VBEに貼り付けて、F5キーでコードを実行します。
- B2セルだけうまく修正ができていないようです。
- ChatGPTに戻り再度修正の指示をします。
- 修正後のコードが出力されました。VBEに貼り付けて再度コードを実行します。
- 表記ゆれの修正が完了しました。
日付の表記ゆれの修正で1回目「B2セル」が「1899/12/30」に変換されてしまい上手くいきませんでした。なぜ失敗してしまったのか、またどのような修正がされたのかを下記に示します。
① なぜ「1899/12/30」に変換されてしまったのか?
- 1回目のコードは、「年月日」を含んだ文字列の「年」、「月」の文字を「/」に置き換えるだけで「日」という文字列が残ってしまうものとなっていました。
- そのため「A2セル」の値は「日」という文字列が変換されず、「2023/10/7日」という文字列でDateValue関数の引数に渡されたため日付として認識されませんでした。
- DateValue関数が日付として認識できない文字列を変換しようとすると「0」という値が返されます。そして、Excelでは、日付は内部的に連続する整数として表現されます。例えば「1900/1/1」は「1」、「1900/1/2」は「2」というように表されるため、今回の「0」は「1899/12/30」と表され、「B2セル」には「1899/12/30」と出力されることとなりました。
② どのような修正がされたのか?
- 2回目のコードでは、まず「年」、「月」が含まれる文字列かどうかをチェックしています。もし含まれていれば、それらの文字を「/」に置き換える処理を行っています。
- 次に、Split関数を使用して変換後の日付文字列を「/」で分割し、その結果を配列Arrに格納しています。
- 最後にUBound(Arr)関数を使用して、配列に3つの要素(「年」、「月」、「日」)があるかどうかを確認しています。もし3つの要素があれば、日付の部分から日という文字を取り除いています。
上記のような変更を加えることで、「年」、「月」、「日」の文字を正しく取り扱い、日付の表記ゆれを正確に修正することができるようになりました。
日付の表記ゆれを修正するVBAコード
Option Explicit
Sub CorrectDateFormat()
Dim LastRow As Long
Dim i As Long
Dim DateStr As String
Dim CorrectedDate As Date
Dim Arr() As String
' シート1をアクティブにします (必要に応じてシート名を変更してください)
Sheets("Sheet1").Activate
' A列の最後の行を取得
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To LastRow ' 1行目はヘッダーなので、2行目から処理開始
DateStr = Cells(i, 1).Value
' 年月日の文字を含む場合の変換
If InStr(DateStr, "年") > 0 And InStr(DateStr, "月") > 0 Then
DateStr = Replace(Replace(DateStr, "年", "/"), "月", "/")
Arr = Split(DateStr, "/")
If UBound(Arr) = 2 Then
DateStr = Arr(0) & "/" & Arr(1) & "/" & Left(Arr(2), Len(Arr(2)) - 1) ' 日の後の「日」文字を除去
End If
End If
On Error Resume Next
CorrectedDate = DateValue(DateStr)
On Error GoTo 0
' 日付が正しく変換された場合
If IsDate(CorrectedDate) Then
Cells(i, 2).Value = Format(CorrectedDate, "yyyy/mm/dd")
Else
' 日付が変換できなかった場合、元の値をそのままB列にコピー
Cells(i, 2).Value = DateStr
End If
Next i
End Sub
4️⃣ さいごに
- 最後までお読みいただきありがとうございます!
- スクショからVBAコード生成はサクッとマクロを作るには本当に便利な機能です!ぜひ皆様もご活用ください。
- この記事へのご質問やアドバイスがありましたら、ぜひコメントもお待ちしております。
- またX(Twitter)でもVBA、Pythonに関するアウトプットをしていますので、🔽フォローいただけますと幸いです😆