エクセルVBA作成のChatGPTプロンプト文例集

ChatGPTプロンプト、VBAコードをコピペできます😊

MENU

【ChatGPT】値が一致したら、(別シートに)複数の値を転記する(VBA)

値が一致したら、(別シートに)複数の値を転記する

右のシートのA列B列の値と左のシートのA列B列の値が一致したら、右のシートのC列D列に左のシートのC列D列の値を転記します。

 

ChatGPTのプロンプト

連想配列を使って、以下のVBAコードを作成できますか?
マクロ名は「 デモ 」とする。また、日本語でコメントをいれる。
概要:Sheet1 」から「 Sheet2 」へのデータの転記。
手順:
・「 Sheet1 」の「 A列 」と「 B列 」を結合した値をキーとし、「 C列 」と「 D列 」の値を値とする辞書を作成する
・キーが重複している場合、エラーメッセージを表示し、処理を停止する。
・「 Sheet2 」の「 A列 」と「 B列 」を結合した値を新たなキーを作成する。
・新たなキーが辞書に存在する場合、対応する値を「 Sheet2 」の「 C列 」と「 D列 」に転記する。
・「 Sheet2 」をアクティブにする。
・コードの最初に画面の更新と警告の表示を停止し、コードの最後で画面の更新と警告の表示を再開する。

(ポイント1)上の「プロンプトをコピーする」ボタンで、コピーできます。

 

(ポイント2)ChatGPTに貼り付けたあと、「」で囲まれた緑色の部分を、あなたの目的に合わせて修正します。プロンプトの削除追加もできます。

(ポイント3)会話のスタイルは、「より厳密に」を選択します。

 

(ポイント4)プロンプトの改行は、ShiftキーEnterキーを同時に押します。

 

ChatGPTの回答

もちろんです。以下に指定の条件に基づいたVBAコードを示します:

Sub デモ()
    ' 画面の更新と警告の表示を停止
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False

    Dim dict As Object
    Set dict = CreateObject("Scripting.Dictionary")
    Dim ws1 As Worksheet, ws2 As Worksheet
    Dim i As Long, key As String, val As Variant

    Set ws1 = ThisWorkbook.Sheets("Sheet1")
    Set ws2 = ThisWorkbook.Sheets("Sheet2")

    ' Sheet1のA列とB列を結合した値をキーとし、C列とD列の値を値とする辞書を作成
    For i = 1 To ws1.Cells(ws1.Rows.Count, "A").End(xlUp).Row
        key = ws1.Cells(i, "A").Value & ws1.Cells(i, "B").Value
        If dict.Exists(key) Then
            MsgBox "キーが重複しています: " & key
            Exit Sub
        Else
            dict.Add key, Array(ws1.Cells(i, "C").Value, ws1.Cells(i, "D").Value)
        End If
    Next i

    ' Sheet2のA列とB列を結合した値を新たなキーを作成し、新たなキーが辞書に存在する場合、対応する値をSheet2のC列とD列に転記
    For i = 1 To ws2.Cells(ws2.Rows.Count, "A").End(xlUp).Row
        key = ws2.Cells(i, "A").Value & ws2.Cells(i, "B").Value
        If dict.Exists(key) Then
            val = dict(key)
            ws2.Cells(i, "C").Value = val(0)
            ws2.Cells(i, "D").Value = val(1)
        End If
    Next i

    ' Sheet2をアクティブにする
    ws2.Activate

    ' 画面の更新と警告の表示を再開
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
End

 

 

(ポイント)上のVBAコードはサンプルです。実際にプロンプトを作成し、ChatGPTからの回答をエクセルのVBE画面に貼り付けて、VBAコードを実行してみましょう!😊

 

VBAマクロを無料のChatGPTMicrosoft Copilotで作成します。

Copilot(https://copilot.microsoft.com)はログイン不要。すぐVBAマクロが完成します。

CoPilotのログイン方法

詳しく

3種類のログインの方法があります

GoogleのブラウザChrome(サインインなし

1回質問すると、回答のあと「新しいトピック」に切り替わり、チャットできません。

GoogleのブラウザChrome(サインインあり

ChatGPTと5回までチャットできます。

MicrosoftのブラウザBing

ChatGPTと30回チャットできます。



チャットの活用方法

ChatGPTのチャットは、前の質問の引用は不要です。

ChatGPTは最初の質問からすべてを考慮して回答をします。

つまり、現在の問題点や疑問点だけを伝えれます。

 

VBAコードの実行

詳しく

Excelファイルの拡張子を.xlsmに変更

ExcelでVBAマクロを使うために、ファイルの拡張子を.xlsmに変更する手順は以下の通りです:

  1. Excelファイルを開きます。
  2. ファイルメニューをクリックし、「名前を付けて保存」を選択します。
  3. 「名前を付けて保存」ダイアログボックスが表示されます。ここで、「Excelマクロ有効ブック(.xlsm)」を選択します。
  4. ファイル名を入力し、「保存」をクリックします。

VBE画面に貼り付け

ExcelのVBE(Visual Basic for Applicationsエディタ)で「Module1」を開く手順は以下の通りです:

  1. Excelを開く。
  2. Alt + F11 キーを押してVBEを開く。
  3. 挿入 メニューをクリックし、ドロップダウンメニューから モジュール を選択します。
  4. 左側のプロジェクトエクスプローラーで、対象のワークブックを展開します(ワークブック名の左側にある「+」または「▶」アイコンをクリック)。
  5. 「Modules」フォルダを展開。
  6. 「Module1」をダブルクリック。
  7. 開いた右側の画面に、VBAコードを貼り付け。

 

VBAコード実行

Excelの「開発」タブからVBAコードを実行する手順は以下の通りです:

  1. Excelを開く。
  2. リボンの上部にある「開発」タブをクリック(「開発」タブが表示されていない場合は、[ファイル] > [オプション] > [メインタブ]で「開発」をチェックして表示を有効)。
  3. 「開発」タブの中にある「マクロ」ボタンをクリック。
  4. マクロダイアログボックスが表示されます。ここで実行したいマクロ(VBAコード)を選択。
  5. 「実行」ボタンをクリック。

VBAコードの修正

詳しく

マクロを実行した結果が意図と異なる場合、ChatGPTにVBAコードの修正を依頼します。
なお、修正を依頼するプロンプトは、修正したい点についてのみ記載します。

あなたが作成した上記のVBAコードを実行すると、私のプロンプトの「×××」の処理がされていません。VBAコードを修正できますか?

 

あなたが作成した上記のVBAコードに、「×××」する処理を追加できますか?

VBAコードのエラー

詳しく

変数が宣言されていません。


青色に反転した文字を下記の様にChatGPTに貼り付けて、送信します。

ChatGPTからの回答

修正したコードが再作成されるので、再度VBEに貼り付けて実行します。

インデックスが有効範囲にありません

「デバック」ボタンを押します。

存在しないシート名を指定

Excelのシートは、「リスト」ですが、VBAコードは「リスト表」です。
VBAコードを「”リスト”」に修正し、VBE画面の上にある▶ボタンを押し、コードの実行を再開します。

マクロが表示されない

VBEにマクロを貼り付ける際、前のコードの一部が残っていないか確認してください。

前のデータのSが残ったまま、貼り付けている。

 VBAコードを作成するプロンプトの書き方