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

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

MENU

【ChatGPT】シフト表を日付で抽出し、出勤者を表示する(VBA)

シフト表を日付で抽出し、出勤者を表示する

シフト表で抽出日に該当する氏名、出勤日、シフトを出力する。

 

ChatGPTのプロンプト

下記の処理の概要に沿ったVBAコードを作成できますか?
マクロ名:デモ 処理の概要:
・クロス集計表のデータをリスト表に変換して、「シフト表」シートの「B12」セルに出力する。
・リスト表を出力する前に、現在の「 シフト表 」シートのリスト表の書式をクリアし、その後、値をクリアする。これは、値をクリアすると書式をクリアできないためである。
・「 シフト表 」シートの「 B11 」セルに「 氏名 」、「 C11 」セルに「 出勤日 」、「 D11 」セルに「 シフト 」を入力し、それらの塗りつぶしの色は「 シフト表 」シートの「 B2 」セルにする。
・リスト表を出力後に、その表の「 列目 」の値を昇順に並び替える。
・リスト表を出力後に、見出しを含め、その表の全体に罫線を入れる。
クロス集計表のデータをリスト表に変換: 
・リスト表の「 列目 」にクロス集計表の「 列目 」の値を、「 列目 」にクロス集計表の「 行目 」の値、「 列目 」にクロス集計表の値を入れる。なお、その処理を行う条件として、クロス集計表の「 行目 」の値が「シフト表」シートの「B9」セルの値と一致し、かつ、クロス集計表の値が空白でないときに限る。なお、クロス集計表の最終行は「 B2 」セルから下方向End(xlDown)して取得する。これは、クロス集計表の下にデータがあるためである。 クロス集計表: ・クロス集計表の左上セルは「 シフト表 」シートの「 B2 」セルで、行数と列数は可変。 ・クロス集計表は、「 B 」と「 2行目 」に見出しがあり、その交点にそれぞれの見出しに対応する値がある。 留意点: ・処理の冒頭で、「 シフト表 」シートの「 B2 」セルの値を確認する。空白の場合B2セルに値を入れてください。「 シフト表 」の最終行、最終列を確認できません。処理を終了します」とエラーメッセージを出し、処理を終了する。 ・処理の冒頭で、「 シフト表 」シートの「 C2 」セルと「 B9 」セルの書式が同じか確認する。違う場合「 C2 」セルと「 B9 」セルの書式が異なり、値を比較できません。処理を終了します」とエラーメッセージを出し、処理を終了する。 全体的な指針: ・変数の宣言は使用する直前に行う。これは、変数の宣言を漏らさないためである。 ・日本語でコメントをいれる。 ・コードの最初に画面の更新と警告の表示を停止し、コードの最後で画面の更新と警告の表示を再開する。

 

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

 

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

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

 

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

 

ChatGPTの回答

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

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

    ' シートを指定
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("シフト表")

    ' B2セルの値を確認
    If ws.Range("B2").Value = "" Then
        MsgBox "B2セルに値を入れてください。「シフト表」の最終行、最終列を確認できません。処理を終了します"
        Exit Sub
    End If

    ' C2セルとB9セルの書式が同じか確認
    If ws.Range("C2").NumberFormat <> ws.Range("B9").NumberFormat Then
        MsgBox "C2セルとB9セルの書式が異なり、値を比較できません。処理を終了します"
        Exit Sub
    End If

    ' リスト表の書式と値をクリア
    ws.Range("B12:D" & ws.Cells(ws.Rows.Count, "B").End(xlUp).Row).ClearFormats
    ws.Range("B12:D" & ws.Cells(ws.Rows.Count, "B").End(xlUp).Row).ClearContents

    ' 見出しを入力
    ws.Range("B11").Value = "氏名"
    ws.Range("C11").Value = "出勤日"
    ws.Range("D11").Value = "シフト"

    ' 見出しの塗りつぶしの色を設定
    ws.Range("B11:D11").Interior.Color = ws.Range("B2").Interior.Color

    ' クロス集計表の最終行を取得
    Dim lastRow As Long
    lastRow = ws.Range("B2").End(xlDown).Row

    ' リスト表にデータを出力
    Dim i As Long, j As Long, k As Long
    k = 12
    For i = 3 To lastRow
        For j = 3 To ws.Cells(2, ws.Columns.Count).End(xlToLeft).Column
            If ws.Cells(2, j).Value = ws.Range("B9").Value And ws.Cells(i, j).Value <> "" Then
                ws.Cells(k, "B").Value = ws.Cells(i, "B").Value
                ws.Cells(k, "C").Value = ws.Cells(2, j).Value
                ws.Cells(k, "D").Value = ws.Cells(i, j).Value
                k = k + 1
            End If
        Next j
    Next i

    ' リスト表を昇順に並び替え
    ws.Range("B12:D" & ws.Cells(ws.Rows.Count, "B").End(xlUp).Row).Sort Key1:=ws.Range("D12"), Order1:=xlAscending, Header:=xlNo

    ' リスト表に罫線を入れる
    ws.Range("B11:D" & ws.Cells(ws.Rows.Count, "B").End(xlUp).Row).Borders.LineStyle = xlContinuous

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

 

(ポイント)上の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コードを作成するプロンプトの書き方