第3章:AIを「自分だけのVBA先生」にする!質問・相談の超実践テクニック
第2章では、Excel VBAの基礎の基礎に触れ、実際にコードを動かす体験をしました。そして、エラーが出た時にもAIが助けてくれるらしい、という心強い存在を知りました。
この第3章では、まさにその頼りになる存在であるAIを、あなたのExcel VBA学習や業務自動化の強力なパートナーとして最大限に活用するためのスキル、すなわちAIへの「話し方」である「プロンプト術」を徹底的に学びます。AIは単なるツールではなく、まるであなた専属の「VBA先生」や「優秀なアシスタント」のように、あなたの質問に答え、課題解決を手伝ってくれます。その力をどれだけ引き出せるかは、あなたの「プロンプト(質問文)」にかかっています。
第1章:AIって一体何?あなたのExcel作業をどう変える?(AI超基本)
第2章:VBAって怖くない!Excelを「言葉で動かす」(VBA超入門)
第4章:【事例で学ぶ】AIとVBAでExcel作業を劇的に効率化する!
第5章:AI×VBAでつまづかない!トラブルシューティングとAIとの付き合い方
第6章:AIとVBAを学び続ける!あなたの「超効率化」を止めないヒント
第7章:さらなる高みへ!AI×VBA応用テクニックの世界
おわりに:AI×VBAはあなたの未来を変える強力な武器 (付録付き)
AIを使いこなすカギ!良い「プロンプト」(質問文)の書き方
なぜ「良いプロンプト」が必要なの?
- 悪いプロンプトの例: 「Excel VBA 教えて」
- AIの回答(例): 「Excel VBAはMicrosoft Officeに搭載されているプログラミング言語です。どんなことを知りたいですか?」
一方、具体的で分かりやすい「良いプロンプト」を使えば、AIはあなたの意図を正確に理解し、ピンポイントな情報を提供してくれます。
- 良いプロンプトの例: 「Excel VBAで、A1セルに『テスト』という文字を入力するコードを教えてください。」
- AIの回答(例): 「はい、Excel VBAでA1セルに『テスト』と入力するコードは以下のようになります。 vba Range("A1").Value = "テスト" このコードをVBEの標準モジュールに貼り付けて実行すると、A1セルに『テスト』と入力されます。」

良いプロンプトを書くための基本的な考え方
良いプロンプトの具体的な要素
- 目的・要望を明確に具体的に伝える
AIに「何をやってほしいのか」「何について知りたいのか」を、できるだけ具体的に明確に伝えましょう。抽象的な質問よりも、具体的な質問の方がAIは的確な答えを出しやすくなります。
- 例: 「Excelのデータを集計したい」ではなく、「Excelの『売上データ』シートにあるB列の商品の売上合計を計算するVBAコードを教えてください。」のように、シート名、列、やりたいこと(合計計算)、求めるもの(VBAコード)を具体的に盛り込む。
- 例: 「Excelのデータを集計したい」ではなく、「Excelの『売上データ』シートにあるB列の商品の売上合計を計算するVBAコードを教えてください。」のように、シート名、列、やりたいこと(合計計算)、求めるもの(VBAコード)を具体的に盛り込む。
- 必要な背景情報や制約条件を含める
AIがより適切な回答を生成できるように、質問に関連する背景情報や、満たしてほしい条件(制約条件)を含めましょう。
- 例: 「VBAコードを教えてください」だけでなく、「Excel 2019で動作するVBAコードで、特定のファイルを開く処理を教えてください。」のように、Excelのバージョンや、特定のファイルを開く、といった操作を含める。
- 例: 「シートを操作するVBAコード」ではなく、「『集計』という名前のシートのみを操作対象とするVBAコードを教えてください。」のように、対象とするシート名を指定する。
- 例: 「エラーが出た」だけでなく、「MsgBox '実行時エラー '1004': アプリケーション定義またはオブジェクト定義のエラーです。' というエラーメッセージが表示されました。このVBAコードの何が原因か教えてください。コードは以下の通りです。(コードを貼り付け)」のように、エラーメッセージの内容や関連するコードを含める。
- AIに「役割」を与える(ロールプレイング)
AIに特定の役割を与えると、その役割に沿った回答を生成しやすくなります。VBAに関して質問する場合は、「あなたはExcel VBAのベテラン講師です」「あなたはプログラミング初心者に教えるのが得意なAIです」のように指示してみましょう。
- 例: 「あなたはExcel VBAの初心者向け講師です。私が書いたコードを、一つ一つの命令について、初心者にも分かるように解説してください。」のように役割を指定することで、専門用語を避け、分かりやすい説明を引き出しやすくなる。
- 例: 「あなたはExcel VBAの初心者向け講師です。私が書いたコードを、一つ一つの命令について、初心者にも分かるように解説してください。」のように役割を指定することで、専門用語を避け、分かりやすい説明を引き出しやすくなる。
- 回答の形式やレベルを指定する
AIにどのような形式で回答してほしいか、どのくらいのレベルで説明してほしいかを指定することも有効です。
- 例: 「VBAコードだけを提示してください。」
- 例: 「手順を箇条書きでまとめてください。」
- 例: 「小学生にも分かるように説明してください。」
- 例: 「コードとそのコードが何をしているかの簡単な解説を含めてください。」
- 具体的な例を示す
質問内容に関連する具体的なデータや、自分で書いたコードの一部などをプロンプトに含めることで、AIはより状況を把握しやすくなります。
- 例: 「以下のExcelデータ(ここにデータをコピー&ペースト)のB列の合計を求めるVBAコードを教えてください。」
- 例: 「私が書いた以下のコード(ここにコードをコピー&ペースト)が動きません。どこを修正すれば良いですか?」
- 実践的なプロンプトの例(段階的に良くする)
これまでに、良いプロンプトに含めるべき要素をいくつかご紹介しました。ここでは、具体的なExcel作業のシナリオを元に、段階的にプロンプトを改善していく例を見ていきましょう。
良いプロンプトの具体例
最初のプロンプト(情報不足):
Excel VBAで、売上データからA商品だけを抽出して、別のシートにコピーするコードを教えて。
情報を加えたプロンプト(少し具体的):
Excel VBAで、「売上データ」シートにあるデータの中から、B列(商品名)が「A商品」となっている行だけを抽出したいです。
抽出した行を、「A商品リスト」という別のシートにコピーして貼り付けるコードを教えてください。
さらに情報を加えたプロンプト(本書でおすすめする形):
あなたはExcel VBAの専門家で、VBA初心者に分かりやすくコードを教えてくれるアシスタントです。
【依頼内容】
「売上データ」というExcelシートのA列からF列にあるデータの中から、B列(商品名)が「A商品」となっている行だけを抽出したいです。
抽出した行は、新しく作成した「A商品リスト」というシートの1行目から順にコピーして貼り付けたいです。
この一連の作業を自動化するVBAコードを教えてください。
【条件・補足】
・ExcelのバージョンはMicrosoft 365です。
・コードと合わせて、それぞれのコードが何をしているかの簡単な解説もお願いします。
・コードはVBEの標準モジュールに貼り付けて使用することを想定しています。
まとめ:AIとの「対話」でVBAスキルを磨く
「このコードは何?」AIにVBAを解説してもらう方法
AIへの質問は、コードを「書いてもらう」ことだけではありません。
AIをあなたの「コード読解アシスタント」として活用しましょう。
なぜAIにコード解説を頼むと便利なの?
- 自分で調べるより速い: 分からない命令が出てくるたびに、ネット検索したり参考書を引いたりするのは時間がかかります。AIなら、コード全体や特定の部分を一度に解説してもらえます。
- 初心者にも分かりやすい言葉で: AIに「初心者向けに解説して」とお願いすれば、専門用語を避け、あなたが理解できる言葉で説明してくれます。
- コード全体の流れも理解できる: 一つ一つの命令だけでなく、コード全体がどのような処理の流れになっているのかを、AIにまとめて解説してもらうことも可能です。
コード解説を依頼する基本的なプロンプト
以下のVBAコードを解説してください。
(ここに解説してほしいVBAコードを貼り付け)

このように、「解説してください」という指示と、その下に解説してほしいVBAコードを貼り付けるだけで、AIはコードの分析を開始し、解説を生成してくれます。コードは、VBEからそのままコピー&ペーストして構いません。
解説のレベルや形式を指定するプロンプト
- 初心者向けに:
以下のVBAコードについて、Excel VBA初心者の私にも分かるように、専門用語を避けながら解説してください。 (ここにVBAコードを貼り付け)
- 箇条書きでステップごとに:
以下のVBAコードが実行される際の処理の流れを、ステップごとに箇条書きで分かりやすく解説してください。 (ここにVBAコードを貼り付け)
- 特定の機能に焦点を当てて:
以下のVBAコードの中で、データをコピー&ペーストしている部分が何を意味しているか、具体的に解説してください。 (ここにVBAコードを貼り付け)
- コードと解説をセットで:
以下のVBAコードについて、各行(または主要な部分)ごとに、そのコードが何をしているかの解説を加えてください。 (ここにVBAコードを貼り付け)
このように、どのような立場で(初心者向け、ステップごと)、どのような形式で(箇条書き、コードとセット)、何に焦点を当てて解説してほしいのかを具体的に伝えることで、AIはあなたのニーズに合った解説を生成してくれます。
特定の箇所だけ質問する
Excel VBAについて質問です。以下のコードの一部にある `Range("A1").Value` という記述は、具体的に何を意味していますか? 分かりやすく教えてください。

このように、疑問に思っているコードの部分を明確に示して質問することで、AIはその部分に絞った解説をしてくれます。もし可能であれば、そのコードが含まれている全体の一部(関連する数行)も一緒に見せると、AIは文脈を理解しやすくなります。
AIの解説をどう活かすか
【重要】コードを実行する際の注意
そのため、重要なデータが入ったファイルで新しいコードを試す前には、必ず以下のいずれかを行ってください。
- ファイルのバックアップをしっかり取る: 元のファイルがいつでも戻せるように、コピーを作成しておきましょう。
- テスト用のファイルで試す: 新しいExcelファイルを作成し、必要なデータの一部だけをコピーして貼り付け、そのファイルでコードを試すようにしましょう。
慣れるまでは、この注意を必ず守ってください。
そして、Excelのシートに戻って、コードの実行結果があなたの希望通りの動作になっているかを確認します。データが正しく処理されたか、エラーは発生しないかなどをチェックしてください。
慣れてきたら、解説を元に「この部分がどう影響するのかな?」と考えて、実際にコードを動かして結果を見てみる、そして希望通りか確認する、という練習を繰り返すのがおすすめです。この積み重ねが、あなたのVBAスキルを着実に向上させてくれます。
複雑な処理も怖くない!「段階的に教えて」テクニック
問題を分解!段階的にAIと「対話」するメリット
例えるなら、料理のレシピを一度に全て伝えるのではなく、「まず野菜を切って」「次に肉を炒めて」というように、手順を追って説明していくようなものです。
- プロンプトがシンプルになる: 一度に大量の情報を詰め込む必要がないため、一つ一つのプロンプトが分かりやすくなります。
- AIの回答精度が高まる: AIは直前のやり取りの文脈を理解して回答を生成するため、段階的に情報を与えることで、より的確な回答を引き出しやすくなります。
- 思考が整理される: 問題を小さなステップに分解する過程で、あなたが本当にやりたいことが明確になり、頭の中が整理されます。
- 学習効果が高い: AIとの対話を通じてステップごとに確認を進めるため、コードや処理の流れへの理解が深まり、学習の定着に繋がります。
- 仕様変更に対応しやすい: 途中でやりたいことが少し変わったり、新しいアイデアが浮かんだりしても、柔軟に対応しながらAIと共同でコードを作り上げていくことができます。
これはまさに、AIをあなたの「優秀なアシスタント」として、一緒に考え、一緒に作り上げていく「対話」のスタイルです。
AIに状況を正確に伝える:画面スクショの活用
- 状況の正確な把握: AIはあなたの実際の作業環境(データの形、シートの名前、セルの書式など)を視覚的に理解できます。例えば、「この表の合計を出したい」と言うだけでなく、実際の表の範囲を見せることで、AIは対象データを迷わず特定できます。
- 曖昧さの解消: テキストの説明だけでは複数の解釈ができる場合でも、画像を見ることでAIはあなたの意図を正確に推測しやすくなります。「〇〇のデータを△△に貼り付けたい」という指示も、実際のシートレイアウトを見せることで誤解を防げます。
- 複雑なレイアウトの伝達: セルの結合、特定の図やグラフの配置、複雑な入力規則など、テキストで説明が困難な視覚的な情報を簡単に伝えられます。
- エラー原因の特定支援: エラーメッセージが表示されている画面や、VBEでコードが特定の行で止まっている画面のスクショは、AIが問題の原因を素早く特定し、修正方法を提案するための重要な手掛かりとなります。意図しない実行結果になった画面を見せるのも有効です。
どのような画面を見せると良いか? 例えば、以下のような場面で活用を検討してみてください。
- 自動化したいデータの入ったシート全体の画面: データの範囲、ヘッダー行、列の内容などが分かります。
- 特定の操作を行いたい部分の画面: 例えば、抽出したい範囲、集計したい範囲などが含まれる画面。
- エラーが発生したVBEの画面: エラーメッセージの内容や、黄色く強調表示されたコードの行などが分かります。
- 意図しない実行結果になったExcelシートの画面: どこが期待と違うのかをAIが把握しやすくなります。
【注意点】
この画面スクショの活用は、次に示すようなAIとの対話の各ステップにおいても、AIの理解を深める上で非常に有効な手段となります。
具体的なシナリオで「段階的に教えて」を実践
- 「元データ」シートに、日付、商品名、売上金額のデータがある。
- このデータから、特定の期間(例:先月1ヶ月分)のデータだけを抽出したい。
- 抽出したデータを商品名ごとに集計し、集計結果を新しいシートにまとめたい。
- さらに、集計結果を元に、商品名ごとの売上推移グラフを作成したい。
この一連の作業をVBAで自動化したいと考えました。一度に全てをAIに依頼しようとすると、かなり複雑なプロンプトになりそうですね。そこで、作業を小さなステップに分解してみましょう。
- 特定の期間のデータを抽出する
- 抽出したデータを商品名ごとに集計する
- 集計結果を元にグラフを作成する

あなたはExcel VBAの初心者向け講師です。
「元データ」シートから、特定期間のデータを抽出するVBAコードを段階的に教えてもらいたいです。
まず、最初のステップとして、「元データ」シートのデータから、日付が先月1ヶ月分である行を抽出するVBAコードを教えてください。コードと簡単な解説をお願いします。
Sub ExtractDataByDate()
Dim wsSource As Worksheet
Dim wsTarget As Worksheet
Dim lastRow As Long
Dim i As Long
Dim startDate As Date
Dim endDate As Date
' 抽出期間を設定(例:先月1ヶ月)
' 今日の日付を基準に、先月1日の日付を取得
startDate = DateSerial(Year(Date), Month(Date) - 1, 1)
' 今日の日付を基準に、今月1日の日付を取得(先月末日までを抽出するため)
endDate = DateSerial(Year(Date), Month(Date), 1) - 1
Set wsSource = ThisWorkbook.Sheets("元データ")
' 抽出結果を貼り付けるシート(「抽出結果」という名前を想定)
' もしシートが存在すればクリア、存在しなければ作成
On Error Resume Next
Set wsTarget = ThisWorkbook.Sheets("抽出結果")
If wsTarget Is Nothing Then
Set wsTarget = ThisWorkbook.Sheets.Add(After:=wsSource)
wsTarget.Name = "抽出結果"
Else
wsTarget.Cells.ClearContents ' 既存のデータをクリア
End If
On Error GoTo 0
' ヘッダー行をコピー(1行目を想定)
wsSource.Rows(1).Copy wsTarget.Rows(1)
lastRow = wsSource.Cells(Rows.Count, "A").End(xlUp).Row ' 元データの最終行を取得
' データ行をループして条件に合う行の売上金額を合計
For i = 2 To lastRow
' A列の日付が抽出期間内にあるか判定
If wsSource.Cells(i, "A").Value >= startDate And _
wsSource.Cells(i, "A").Value <= endDate Then
' 条件を満たす行を「抽出結果」シートの最終行の下にコピー
wsSource.Rows(i).Copy wsTarget.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
End If
Next i
MsgBox "データの抽出が完了しました。「抽出結果」シートを確認してください。"
End Sub
解説:
このコードは、「元データ」シートのA列の日付を見て、設定した期間(startDate から endDate まで)のデータを抽出し、「抽出結果」という名前のシートにコピー&ペーストするものです。
DateSerial や DateAdd 関数で日付を計算し、If 文で日付が期間内にあるか判定しています。
条件に合う行が見つかると、その行をコピーして抽出結果シートの最後に貼り付けています。
※上記はVBAコードも解説もあくまでサンプルです。実際にはもっと詳しい解説文になります。
ありがとうございます。頂いたコードで、先月分のデータが抽出できました。
次に、抽出したデータを商品名ごとに集計するVBAコードを教えてください。抽出されたデータは新しいシートに貼り付けられているとします。集計は、商品名(B列)を基準に、売上金額(C列)の合計を求めたいです。集計結果は、商品名と合計売上金額のリストとして提示してください。
Sub SummarizeSalesByProduct()
Dim wsSource As Worksheet
Dim wsTarget As Worksheet
Dim dataRange As Range
Dim pivotCache As PivotCache
Dim pivotTable As PivotTable
' 集計元のシート(抽出結果シートを想定)
Set wsSource = ThisWorkbook.Sheets("抽出結果")
' 集計結果を貼り付けるシート(「集計シート」という名前を想定)
' もしシートが存在すればクリア、存在しなければ作成
On Error Resume Next
Set wsTarget = ThisWorkbook.Sheets("集計シート")
If wsTarget Is Nothing Then
Set wsTarget = ThisWorkbook.Sheets.Add(After:=wsSource)
wsTarget.Name = "集計シート"
Else
wsTarget.Cells.ClearContents ' 既存のデータをクリア
End If
On Error GoTo 0
' 集計対象のデータ範囲(抽出結果シートのデータ全体を想定)
' 例:A1セルからデータが入っている最終セルまで
Set dataRange = wsSource.Range("A1").CurrentRegion ' CurrentRegionで連続したデータ範囲を取得
' ピボットテーブルの作成
Set pivotCache = ThisWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=dataRange)
Set pivotTable = pivotCache.CreatePivotTable(TableDestination:=wsTarget.Range("A1"), TableName:="SalesSummary")
' ピボットテーブルのフィールド設定
With pivotTable
.PivotFields("商品名").Orientation = xlRowField ' 商品名を「行」フィールドに設定
.AddDataField .PivotFields("売上金額"), "合計 / 売上金額", xlSum ' 売上金額を「値」フィールドに合計として設定
End With
' ピボットテーブルの表示設定(必要に応じて)
pivotTable.PivotFields("商品名").Caption = "商品名" ' フィールド名を「商品名」に変更
' ピボットテーブルのレイアウトをテーブル形式にする例
' pivotTable.RowAxisLayout xlTabularRow
MsgBox "集計が完了しました。「集計シート」を確認してください。"
End Sub
解説:
このコードは、「抽出結果」シートのデータを使って、商品名ごとの売上金額合計をピボットテーブルで集計し、「集計シート」に結果を表示するものです。
ピボットテーブルを使うと、VBAでこのような集計処理を効率的に記述できます。
CreatePivotTable でピボットテーブルを作成し、PivotFields や AddDataField で集計の設定を行っています。
必要に応じて、グラフのタイトルや凡例なども設定できます。
※上記はVBAコードも解説もあくまでサンプルです。実際にはもっと詳しい解説文になります。
集計もできました! ありがとうございます。
最後に、集計結果のデータを使って、商品名ごとの売上推移グラフ(棒グラフ)を作成するVBAコードを教えてください。集計結果は「集計シート」のA列に商品名、B列に売上合計が入っているとします。グラフは新しいシートに作成してください。
Sub CreateSalesChart()
Dim wsSource As Worksheet
Dim chartSheet As Chart
Dim dataRange As Range
' グラフの元データとなるシート(集計シートを想定)
Set wsSource = ThisWorkbook.Sheets("集計シート")
' 集計結果のデータ範囲を取得
' 例:A1セルからデータが入っている最終セルまで
Set dataRange = wsSource.Range("A1").CurrentRegion ' CurrentRegionで連続したデータ範囲を取得
' 新しいグラフシートを追加し、変数にセット
Set chartSheet = ThisWorkbook.Charts.Add
' グラフシートの名前を設定
chartSheet.Name = "商品別売上グラフ"
' グラフの元データ範囲を設定
chartSheet.SetSourceData Source:=dataRange
' グラフの種類を明示的に棒グラフ(ここでは集合縦棒)に設定
chartSheet.ChartType = xlColumnClustered
' グラフタイトルを設定
chartSheet.HasTitle = True ' タイトルを表示する設定
chartSheet.ChartTitle.Text = "商品別 売上合計グラフ" ' タイトル文字列を設定
' 凡例を非表示にする(項目数が少ない場合や不要な場合)
chartSheet.HasLegend = False ' 凡例を非表示にする設定
' データラベルを追加する例(任意)
' chartSheet.SeriesCollection(1).HasDataLabels = True
' chartSheet.SeriesCollection(1).DataLabels.ShowValue = True ' 値を表示
MsgBox "グラフの作成が完了しました。「商品別売上グラフ」シートを確認してください。"
End Sub
解説:
このコードは、「集計シート」のデータ範囲(A1セルを含む連続したデータ範囲)を元に、「商品別売上グラフ」という名前の新しいシートに集合縦棒グラフを作成するものです。CurrentRegionでデータ範囲を取得し、SetSourceData でグラフの元データを指定しています。ChartType でグラフの種類を明示的に設定し、HasTitle や ChartTitle.Text でグラフタイトルを設定しています。必要に応じて、グラフのタイトルや凡例なども設定できます。
※上記はVBAコードも解説もあくまでサンプルです。実際にはもっと詳しい解説文になります。

このように、問題を小さなステップに分けてAIに依頼することで、一度に複雑なプロンプトを書くよりも、スムーズに、そして確実に目的のVBAコードにたどり着くことができます。
この「段階的に教えて」テクニックは、VBAコードの生成だけでなく、VBAの仕組みを学ぶ上でも非常に有効です。
AIの回答を改善させる「プロンプト強化法」
- 意図したVBAコードと違うものが提示された。
- 生成されたコードを実行したらエラーになった。
- 解説が難しすぎた、あるいは求めている情報が含まれていなかった。
- 全く見当違いな回答が返ってきた。
このようなことが起こる原因はいくつか考えられます。あなたのプロンプトに情報が不足していたり曖昧だったりした場合、AIが文脈を正確に理解できなかった場合、AIの学習データにない情報だった場合、あるいはAIの「ハルシネーション」が発生した場合です。
期待通りの回答が得られなくても大丈夫!プロンプトは「強化」できる
回答を改善させるための具体的な「プロンプト強化法」
前述の「AIに状況を正確に伝える:画面スクショの活用」で解説したように、画像は多くの情報を正確に伝える力を持っています。
- 例: 『先ほど提示してくれたコードを実行したらエラーになりました。エラーメッセージは以下の通りです。』に続けて、エラーメッセージのテキストをコピー&ペーストするか、エラーポップアップの画面スクショを貼り付ける。
- 例: 『VBEでコードを実行したところ、以下の画像の箇所でエラーが出て止まってしまいました。原因は何でしょうか?』に続けて、エラー箇所が黄色く強調表示されたVBE画面のスクショを貼り付ける。
「デバッグ」をクリックすると当該行が黄色反転で表示されます。
- 例: 「先ほどのコードですが、対象とするデータの最終行は常に変化します。最終行を自動的に取得するように修正できますか?」
- 例: 「シートの名前は常に『Sheet1』ではなく、ユーザーが自由に変更する可能性があります。シート名を指定するのではなく、現在アクティブなシートを対象にするようにコードを変更してください。」
- 例: 「生成された解説は理解できましたが、この処理にかかる時間についても教えてください。」
このように、AIがコードを生成・解説する上で必要となる、あるいは回答の精度を高めるために役立つ情報を後から補足することで、AIはより状況に合った回答を生成できます。
- 例: 「先ほどは〇〇する方法を教えていただきましたが、△△を使った別の方法はありますか?」
- 例: 「提示されたコードは動作しましたが、もっと処理速度を速くするための方法はありますか?別のコードを教えてください。」
- 例: 「このVBAコードを使わずに、Excelの標準機能だけで同じことはできますか?」
このように、代替案や、より効率的な方法、あるいは異なるアプローチについて質問することで、AIは保有する多様な知識から、別の角度からの回答を提示してくれます。
- 例: 「先ほどの解説は少し専門的すぎました。もっと基本的な言葉で、一つ一つ丁寧に説明していただけますか?」
- 例: 「提示されたコードは長すぎます。もっとシンプルで短いコードにできますか?」
- 例: 「解説だけでなく、そのコードをVBEのどこに貼り付けて、どう実行すれば良いか、具体的な手順も箇条書きで教えてください。」
AIは柔軟に回答形式を変更できるため、遠慮せずにあなたの求める形式を伝えましょう。
- 『このコードを実行したいExcelファイルの具体的なデータ範囲(例: A1:C10)はどこですか?』
- 『処理対象のシートの名前は正確には何ですか?(例: Sheet1, 売上データ)』
- 『エラーが発生するのは、特定の操作を行った後ですか? その操作内容を教えてください。』
- 『「データを抽出したい」とのことですが、どのような条件でデータを絞り込みたいですか?(例: B列が「A商品」の場合、C列が1000より大きい場合など)』
- 『エラーメッセージの正確な全文を教えていただけますか?』
- 『エラーが発生したVBEの画面(エラー箇所が黄色くなった状態)を見せていただけますか?』
このように、AIに質問させることで、あなたはAIがどのような情報を必要としているのかを知ることができ、次にどのようなプロンプトを書けば良いかのヒントを得られます。これは、AIとの共同作業において非常に強力なテクニックです。
まとめ:プロンプト強化はAI活用の必須スキル
今回ご紹介したようなプロンプト強化のテクニックを使うことで、AIとのやり取りを通じて、あなたの求めるVBAコードや解説に確実にたどり着くことができます。これは、単にコードを手に入れるだけでなく、AIとの対話のプロセスを通してVBAへの理解を深めることにも繋がります。
「わかったつもり」と「たぶんあってる」の違い
「わかったつもり」とは?
AIが生成してくれたVBAコードや、それに対するAIの解説を読んだときに、コードの細部まで完全に理解できたわけではないけれど、「なんとなくこういう処理をしているらしい」「この部分が〇〇に関係しているのかな」と、コード全体の概要や、主要な部分が何をしているのかを、表面的な理解にとどめる状態を、ここでは「わかったつもり」と定義します。
「たぶんあってる」とは?
一方、「たぶんあってる」とは、AIが生成したVBAコードをExcelで実行した結果について、きちんと確認や検証をせずに、「AIが作ったコードだから、きっと私の意図通りに動いているだろう」「エラーが出なかったから、たぶん大丈夫だろう」と、結果の正確性を安易に信用してしまう状態を指します。
AIを活用した「書かない自動化」における二つの位置づけ
- VBAコードの細部が「わかったつもり」の状態でもOK(徐々に理解を深めれば良い)
- しかし、実行結果が「たぶんあってる」で終わらせるのは絶対にNG! 必ず検証が必要
ということを強く意識することが大切です。

AIが生成したコードの実行結果は必ず「検証」しよう
AIを安全に、そして効果的に活用するためには、AIが生成したVBAコードの実行結果を必ず「検証」することが重要です。検証とは、コードが本当にあなたの目的通りに、正確に動作しているのかを確認する作業のことです。
検証の具体的な方法
- 実際にExcelで動かして結果を確認: AIがVBAコードを生成してくれたら、まずはテスト用のファイル(【重要】コードを実行する際の注意)で実際にコードを実行してみましょう。そして、その実行結果があなたの期待通りになっているかを確認します。エラーが出ないか、データが正しく処理されるか、求めている結果が得られるかなどをチェックしてください。これが最も直接的で重要な検証方法です。
- 簡単な例で試す: 複雑なデータや状況でいきなり試すのが不安な場合は、シンプルで分かりやすいデータを用意して、AIが生成したコードを試してみましょう。簡単な例で意図通りに動作することを確認できれば、より複雑な状況での動作もある程度予測できます。
- 複数のAIや他の情報源と照らし合わせる: (ここはコード内容の検証に近いですが、実行結果がなぜそうなるのかの理解を深める意味で有効)もし可能であれば、同じプロンプトを別のAIモデルに投げかけて、回答を比較してみるのも有効です。複数のAIが同じような回答をする場合は、その情報の信頼性は高まります。
- AIに質問して確認: 実行結果が期待通りでない場合や、どこかおかしいと感じる場合は、「この結果が〇〇になってしまったのですが、なぜでしょうか?」「△△というデータが含まれていないようですが、コードは正しいですか?」のように、具体的な結果を示してAIに質問し、確認することも検証の一つです。

検証はVBA学習のチャンス
まとめ:AIを賢く使うための「責任ある検証」
【実践演習】プロンプトの書き方で回答が変わる!
演習テーマ:特定商品の先月売上合計を求める
- 「売上リスト」という名前のシートがある。
- A列に「日付」、B列に「商品名」、C列に「売上金額」が入力されている。
- このデータの中から、特定の商品の先月1ヶ月間の売上金額の合計を求めたい。
- 合計金額は、メッセージボックスで表示したい。

演習の進め方
- AIツール(Webサイトやアプリ)を開き、AIとの新しい会話を開始します。
- これから示す様々なプロンプト例を、一つずつAIに入力して送信します。
- AIからの回答(VBAコードや解説)を確認します。
- 必要であれば、AIが提示したVBAコードをExcelのテスト用ファイルに貼り付けて実行し、結果を確認してみましょう。(【重要】必ずテスト用のファイルを使用してください。第3章の「『このコードは何?』AIにVBAを解説してもらう方法」の「【重要】コードを実行する際の注意」を参照)。
- それぞれのプロンプトに対して、AIの回答がどのように違うかを観察・比較します。
準備ができたら、最初のプロンプトから試してみましょう。
様々なプロンプトを試して比較してみよう!
Excel VBAで、売上リストから特定商品の先月売上合計を出すコードを教えて。
ただし、「売上リスト」というシートのデータの具体的な範囲や、どの列に何の情報が入っているか(商品名や売上金額の列)、特定したい商品の名前、先月1ヶ月間という日付の条件などが不明確なため、今回は一般的な売上合計を求めるコード例を提示します。
Sub CalculateTotalSales()
Dim ws As Worksheet
Dim lastRow As Long
Dim totalSales As Double
' 合計を計算したいシートを指定
Set ws = ThisWorkbook.Sheets("Sheet1") ' <-- ここを「売上リスト」に変更してください
lastRow = ws.Cells(Rows.Count, "A").End(xlUp).Row ' A列を基準に最終行を取得(データの最終行に合わせてください)
' C列(売上金額の列を想定)の合計を計算
totalSales = Application.WorksheetFunction.Sum(ws.Range("C2:C" & lastRow)) ' C2セルから最終行までを合計
' メッセージボックスで合計金額を表示
MsgBox "売上合計: " & totalSales
End Sub
解説:
このコードは、「Sheet1」(実際には「売上リスト」に変更)というシートのC列(売上金額を想定)のデータを単純に合計して、メッセージボックスに表示するものです。特定の商品の絞り込みや日付の条件は含まれていません。
- シートの名前は正確に何ですか?
- 商品名はどの列に入っていますか?
- 売上金額はどの列に入っていますか?
- 日付はどの列に入っていますか?
- 特定したい商品の名前は何ですか?
- 集計したい具体的な期間(例:先月1ヶ月)をどのように指定したいですか?
Excel VBAで、「売上リスト」というシートにあるデータの中から、商品名が「商品B」で、日付が先月1ヶ月間である行を抽出して、売上金額の合計を求めたいです。A列に「日付」、B列に「商品名」、C列に「売上金額」が入力されています。 合計金額をメッセージボックスで表示するコードを教えてください。

予想されるAIの回答:条件に合うデータを絞り込み、合計を計算してメッセージボックスで表示するコードを生成してくれる可能性が高まります。プロンプト例1よりも、より目的に沿ったコードになるでしょう。
Sub CalculateSpecificProductLastMonthSales()
Dim ws As Worksheet
Dim lastRow As Long
Dim i As Long
Dim totalSales As Double
Dim targetProduct As String
Dim startDate As Date
Dim endDate As Date
Set ws = ThisWorkbook.Sheets("売上リスト") ' 対象シートを設定
targetProduct = "商品B" ' 集計したい商品名を設定
' 先月1ヶ月間の日付範囲を設定
startDate = DateSerial(Year(Date), Month(Date) - 1, 1) ' 先月1日
endDate = DateSerial(Year(Date), Month(Date), 1) - 1 ' 先月末日
totalSales = 0 ' 合計金額を初期化
lastRow = ws.Cells(Rows.Count, "A").End(xlUp).Row ' A列を基準に最終行を取得
' データ行をループして条件に合う行の売上金額を合計
For i = 2 To lastRow ' 2行目から(ヘッダー行を除く)
' B列(商品名)が対象商品名 AND A列(日付)が先月1ヶ月間であるか判定
If ws.Cells(i, "B").Value = targetProduct And _
ws.Cells(i, "A").Value >= startDate And _
ws.Cells(i, "A").Value <= endDate Then
totalSales = totalSales + ws.Cells(i, "C").Value ' C列(売上金額)を合計に加算
End If
Next i
' メッセージボックスで合計金額を表示
MsgBox targetProduct & " の先月売上合計: " & totalSales
End Sub
解説:
このコードは、「売上リスト」シートのデータを1行ずつ確認し、B列の商品名が「商品B」であり、かつA列の日付が先月1ヶ月間(startDate から endDate まで)である場合に、C列の売上金額を合計していくものです。
最後に、計算された合計金額をメッセージボックスで表示します。
targetProduct や startDate, endDate の設定値を変えることで、集計条件を変更できます。
あなたはExcel VBAの初心者向け講師です。
「売上リスト」というシートにあるデータの中から、商品名が「商品B」で、日付が先月1ヶ月間である行を抽出して、売上金額の合計を求めたいです。合計金額をメッセージボックスで表示するコードを教えてください。コードと合わせて、それぞれのコードが何をしているかの簡単な解説もお願いします。
Sub CalculateSpecificProductLastMonthSalesForBeginner()
' --- 変数の準備 ---
Dim ws As Worksheet ' 対象となるシート(売上リスト)を入れるための箱
Dim lastRow As Long ' データがどこまで入力されているかを知るための箱
Dim i As Long ' データを1行ずつ見ていくための数(カウンター)
Dim totalSales As Double ' 計算した売上合計を入れておくための箱
Dim targetProduct As String ' 集計したい商品名を入れておく箱
Dim startDate As Date ' 集計したい期間の開始日を入れておく箱
Dim endDate As Date ' 集計したい期間の終了日を入れておく箱
' --- シートの設定 ---
' "売上リスト"という名前のシートを使いますよ、とExcelに伝えます
Set ws = ThisWorkbook.Sheets("売上リスト")
' --- 集計したい条件の設定 ---
' 集計したい商品名を「商品B」と設定します
targetProduct = "商品B"
' 集計したい「先月1ヶ月間」の日付範囲を設定します
' まず、今日の日付を元に「先月1日」の日付を計算します
startDate = DateSerial(Year(Date), Month(Date) - 1, 1)
' 次に、今日の日付を元に「今月1日」を計算し、そこから1日引いて「先月末日」の日付を計算します
endDate = DateSerial(Year(Date), Month(Date), 1) - 1
' --- 合計金額の計算準備 ---
' 合計金額を一旦ゼロにしておきます
totalSales = 0
' "売上リスト"シートのデータが何行目まであるか(A列を基準に)を調べます
lastRow = ws.Cells(Rows.Count, "A").End(xlUp).Row
' --- データを1行ずつ確認して合計 ---
' 2行目から最終行まで、データを順番に見ていきます (1行目は項目の見出しなので飛ばします)
For i = 2 To lastRow
' もし、今見ている行のB列(商品名)が「商品B」と「同じ」で、かつ
' 今見ている行のA列(日付)が「開始日」よりも後か同じ日で、かつ
' 今見ている行のA列(日付)が「終了日」よりも前か同じ日だったら(先月1ヶ月間だったら)
If ws.Cells(i, "B").Value = targetProduct And _
ws.Cells(i, "A").Value >= startDate And _
ws.Cells(i, "A").Value <= endDate Then
' その行のC列(売上金額)の値を、合計金額に「プラス」します
totalSales = totalSales + ws.Cells(i, "C").Value
End If ' もし~だったら、の条件判定はここまで
Next i ' 次の行を見に行きます
' --- 結果の表示 ---
' 計算した合計金額を画面に「メッセージボックス」で表示します
MsgBox targetProduct & " の先月売上合計: " & totalSales
End Sub
解説:
このコードは、ステップを踏んで説明すると以下のようになります。
- まず、VBAで使うための「箱」(変数)をいくつか準備します。シートや行番号、合計金額などを一時的に入れておきます。
- 次に、「売上リスト」という名前のシートを「これから使いますよ」とExcelに伝えます。
- 集計したい商品名(「商品B」)と、集計したい期間(先月1ヶ月間)の開始日と終了日を設定します。日付の計算には DateSerial や DateAdd という機能を使っています。
- 合計金額を入れる箱をゼロにして、これから合計を計算できるように準備します。
- 「売上リスト」シートのデータが何行目まであるか(A列を基準に)を調べます。
- データの2行目から最終行までを順番に「ループ」しながら見ていきます。
- 見ている行のB列(商品名)とA列(日付)が、あなたが設定した条件(商品名が「商品B」で、日付が先月1ヶ月間)に「もし」合っていたら、その行のC列(売上金額)の値を、合計金額に足し合わせます。
- 全ての行を見終わったら、最後に計算された合計金額をメッセージボックスで画面に表示して完了です。
このように、VBAコードは一つ一つの命令が集まって、目的の処理を実行しています。このコードをVBEの標準モジュールに貼り付けて、緑色の実行ボタン(またはF5キー)を押すと、設定した条件で売上合計を計算してくれますよ。
あなたはExcel VBAの初心者向け講師です。
「売上リスト」というシート(A列:日付、B列:商品名、C列:売上金額)にあるデータの中から、商品名が「商品B」で、日付が先月1ヶ月間である行を抽出して、C列の売上金額の合計を求めたいです。合計金額をメッセージボックスで表示するVBAコードを教えてください。
使用しているExcelのバージョンはMicrosoft 365です。
コードと合わせて、それぞれのコードが何をしているかの簡単な解説もお願いします。
Sub CalculateSpecificProductLastMonthSales_Filter()
' --- 変数の準備 ---
Dim ws As Worksheet ' 対象となるシート(売上リスト)を入れるための箱
Dim totalSales As Double ' 計算した売上合計を入れておくための箱
Dim targetProduct As String ' 集計したい商品名を入れておく箱
Dim startDate As Date ' 集計したい期間の開始日を入れておく箱
Dim endDate As Date ' 集計したい期間の終了日を入れておく箱
Dim filterRange As Range ' オートフィルターを設定する範囲を入れておく箱
' --- シートの設定 ---
' "売上リスト"という名前のシートを使いますよ、とExcelに伝えます
Set ws = ThisWorkbook.Sheets("売上リスト")
' --- 集計したい条件の設定 ---
' 集計したい商品名を「商品B」と設定します
targetProduct = "商品B"
' 集計したい「先月1ヶ月間」の日付範囲を設定します
' まず、今日の日付を元に「先月1日」の日付を計算します
startDate = DateSerial(Year(Date), Month(Date) - 1, 1)
' 次に、今日の日付を元に「今月1日」を計算し、そこから1日引いて「先月末日」の日付を計算します
endDate = DateSerial(Year(Date), Month(Date), 1) - 1
' --- オートフィルターを使ってデータを絞り込み ---
' データの範囲全体(A1セルを基準とした連続したデータ範囲)を取得します
Set filterRange = ws.Range("A1").CurrentRegion
' オートフィルターを設定します(もし既にフィルターがかかっていたら解除します)
If ws.AutoFilterMode Then ws.AutoFilter.ShowAllData
filterRange.AutoFilter
' B列(商品名)で「商品B」に絞り込みます
filterRange.AutoFilter Field:=2, Criteria1:=targetProduct ' Field:=2 はB列を意味します
' A列(日付)で先月1ヶ月間の範囲に絞り込みます
filterRange.AutoFilter Field:=1, _
Criteria1:=">=" & startDate, _
Operator:=xlAnd, _
Criteria2:="<=" & endDate ' Field:=1 はA列、Operator:=xlAndはAND条件
' --- 絞り込まれたデータの合計を計算 ---
' C列(売上金額)の、フィルターで表示されているセル(可視セル)だけを合計します
' SUBTOTAL関数を使うと、表示されているセルだけを合計できます
totalSales = Application.WorksheetFunction.Subtotal(9, ws.Range("C2:C" & ws.Cells(Rows.Count, "C").End(xlUp).Row).SpecialCells(xlCellTypeVisible)) ' 9はSUMに対応
' --- オートフィルターを解除 ---
ws.AutoFilter.ShowAllData
' --- 結果の表示 ---
' 計算した合計金額を画面に「メッセージボックス」で表示します
MsgBox targetProduct & " の先月売上合計: " & totalSales
End Sub
解説:
このコードは、Excelの「オートフィルター」機能とSUBTOTAL関数をVBAから操作して、データを絞り込み、合計を計算するものです。
- まず、対象シートや条件を設定します。
- AutoFilter を使って、B列の商品名とA列の日付でデータを絞り込みます。Field は列番号(A列が1、B列が2…)を指定し、Criteria1 や Criteria2 で絞り込み条件を設定します。
- SUBTOTAL(9, ...) と SpecialCells(xlCellTypeVisible) を組み合わせて、フィルターで表示されているC列(売上金額)のセルだけを合計します。
- 最後に、ShowAllData でフィルターを解除し、合計金額をメッセージボックスで表示します。
オートフィルターを使う方法は、データ量が多い場合にループ処理よりも高速になることがあり、Excel 365などの新しいバージョンでは特に有効です。
あなたはExcel VBAの初心者向け講師です。
「売上リスト」というシート(A列:日付、B列:商品名、C列:売上金額)にあるデータの中から、商品名が「商品B」で、日付が先月1ヶ月間である行を抽出して、C列の売上金額の合計を求めたいです。
合計金額を、新しいシートのA1セルに入力するVBAコードを教えてください。
コードと合わせて、それぞれのコードが何をしているかの簡単な解説もお願いします。
Sub OutputSpecificProductLastMonthSalesToSheet()
' --- 変数の準備 ---
Dim wsSource As Worksheet ' 元データのあるシート(売上リスト)を入れるための箱
Dim wsTarget As Worksheet ' 結果を書き込む新しいシートを入れるための箱
Dim totalSales As Double ' 計算した売上合計を入れておくための箱
Dim targetProduct As String ' 集計したい商品名を入れておく箱
Dim startDate As Date ' 集計したい期間の開始日を入れておく箱
Dim endDate As Date ' 集計したい期間の終了日を入れておく箱
Dim filterRange As Range ' オートフィルターを設定する範囲を入れておく箱
' --- シートの設定 ---
' "売上リスト"という名前のシートを使います
Set wsSource = ThisWorkbook.Sheets("売上リスト")
' 結果を書き込む「新しい」シートを作成します
Set wsTarget = ThisWorkbook.Sheets.Add ' 新しいシートを追加
wsTarget.Name = "集計結果(商品B)" ' 新しいシートに名前をつけます
' --- 集計したい条件の設定 ---
targetProduct = "商品B" ' 集計したい商品名を設定
startDate = DateSerial(Year(Date), Month(Date) - 1, 1) ' 先月1日
endDate = DateSerial(Year(Date), Month(Date), 1) - 1 ' 先月末日
' --- オートフィルターを使ってデータを絞り込み(先ほどと同じ) ---
Set filterRange = wsSource.Range("A1").CurrentRegion
If wsSource.AutoFilterMode Then wsSource.AutoFilter.ShowAllData
filterRange.AutoFilter
filterRange.AutoFilter Field:=2, Criteria1:=targetProduct
filterRange.AutoFilter Field:=1, _
Criteria1:=">=" & startDate, _
Operator:=xlAnd, _
Criteria2:="<=" & endDate
' --- 絞り込まれたデータの合計を計算(先ほどと同じ) ---
totalSales = Application.WorksheetFunction.Subtotal(9, wsSource.Range("C2:C" & wsSource.Cells(Rows.Count, "C").End(xlUp).Row).SpecialCells(xlCellTypeVisible))
' --- オートフィルターを解除(先ほどと同じ) ---
wsSource.AutoFilter.ShowAllData
' --- 結果の書き込み ---
' 新しいシート(集計結果(商品B))のA1セルに、計算した合計金額を書き込みます
wsTarget.Range("A1").Value = "商品B 先月合計売上: " & totalSales ' セルに文字と合計金額を入力
' --- 結果の表示(メッセージボックスは不要) ---
MsgBox "集計結果を「" & wsTarget.Name & "」シートのA1セルに入力しました。"
End Sub
解説:
このコードは、先ほどと同じようにオートフィルターでデータを絞り込み、合計金額を計算するところまでは同じです。
- Set wsTarget = ThisWorkbook.Sheets.Add で新しいシートを作成し、
- wsTarget.Name = "集計結果(商品B)" でシートに名前をつけ、
- wsTarget.Range("A1").Value = ... で、その新しいシートのA1セルに合計金額を書き込んでいる点です。
あなたの要望に合わせて、結果の出力先を柔軟に変更できます。
AIにプロンプト作成を手伝ってもらおう!
あなたはExcel VBAの専門家で、私がExcel作業を自動化したいと考えていることを理解しています。
私がこれからAI(あなた)に依頼したい作業は、「売上リスト」というシートにあるデータの中から、商品名が「商品B」で、日付が先月1ヶ月間である行を抽出して、売上金額の合計を求め、メッセージボックスで表示することです。
この作業を効果的にAI(あなた)に依頼するために、どのようなプロンプトを書けば良いか、プロンプトの構成案や例文をいくつか提案してください。初心者向けに分かりやすく教えてくれると助かります。
- 何をしたいのか、具体的に伝える
- 対象となるデータ(シート名や列の内容)について説明する
- どのような形で回答がほしいか(コードだけ、解説付き、手順など)を指定する
これらのポイントを踏まえたプロンプトの構成案と、具体的な例文をいくつか提案します。
[あなたの役割設定(任意)]
[依頼の目的・内容を具体的に]
[対象となるデータの情報(シート名、列、形式など)]
[達成したい結果(メッセージボックス表示、セル入力など)]
[求める回答形式(コード、解説、手順など)]
[その他、補足事項(Excelバージョンなど)]
プロンプト例文1(基本的で分かりやすい依頼):
Excel VBAで、「売上リスト」というシートにあるデータの中から、商品名が「商品B」で、日付が先月1ヶ月間である行を抽出して、売上金額の合計を求めたいです。合計金額をメッセージボックスで表示するコードを教えてください。
あなたはExcel VBAの初心者向け講師です。
私がExcel VBAで実現したいことは、「売上リスト」というシートのデータ(A列:日付、B列:商品名、C列:売上金額)から、商品名が「商品B」で、日付が先月1ヶ月間である行のC列(売上金額)の合計を計算することです。計算結果をメッセージボックスで表示したいです。
この処理を行うVBAコードと、コードの各行が何をしているかの簡単な解説を、初心者にも分かりやすいように教えてください。使用しているExcelはMicrosoft 365です。
あなたはExcel VBAの初心者向け講師です。
「売上リスト」シートのデータから、商品名「商品B」の先月売上合計を求めたいです。この処理を行うためのVBAコードを、いくつかのステップに分けて段階的に教えてもらえませんか?
まず最初のステップとして、先月の日付範囲を判定してデータを絞り込む部分のコードを教えてください。
これらの例文を参考に、あなたの状況や求める回答に合わせてプロンプトを組み立ててみてください。
演習結果から学ぶこと
AIに役割を与えたり、回答形式を指定したりすることで、あなたの求める形に近い回答を引き出せる。
AIは、与えられたプロンプトの内容を正確に反映しようとする。(だからこそ、プロンプトの質が重要!)
プロンプトの書き方に迷ったら、AI自身に相談してみるのも有効なアプローチである。
AIをあなたの「自分だけのVBA先生」として使いこなすためには、今回学んだ「良いプロンプト」の要素を意識し、様々なプロンプトを試してみることが大切です。最初は戸惑うかもしれませんが、試行錯誤を通じて、AIとの効果的なコミュニケーションの方法が掴めてくるはずです。
より高度なプロンプト作成の実践ガイド
さらに深いAI活用の世界へ:実践ガイドのご紹介
本記事でプロンプトの基本をしっかりと掴んだら、ぜひこちらも読んでみてください。あなたのAI活用スキルを一段とレベルアップさせてくれるはずです。
すぐに使える:プロンプト作成テンプレート(記入用フォーム形式)
生成AIプロンプト作成テンプレート(記入用)
【1. 目的】
(このプロンプトで何を達成したいか、最終的なアウトプットとその用途)
記入:
【2. 背景・状況】
(タスクを取り巻く背景情報、プロンプトを使う具体的な場面)
記入:
【3. 役割・ペルソナ】
(AIにどのような立場で回答してほしいか)
記入:
【4. 指示内容】
(AIに具体的に行ってほしいアクション)
記入:
【5. 含める要素】
(出力に必ず含めてほしい情報、キーワード、視点など)
記入:
【6. 除外要素】
(出力に含めてほしくない情報、表現など)
記入:
【7. 読者・受け手】
(生成された出力を見る人がどのような人物か)
記入:
【8. 出力粒度】
(出力の情報の深さや詳細度)
記入:
【9. 出力形式】
(アウトプットの具体的な形式、構成、文字数など)
記入:
【10. トーン・文体】
(出力の雰囲気や口調)
記入:
【11. 制約】
(タスク全体に適用される特別なルールや制限)
記入:
【12. 参考資料・例】
(AIの理解を助ける情報源や、求める出力のサンプル)
記入:
まとめ:AIを「自分だけのVBA先生」にするプロンプト術を習得!
AIとの対話を通じてVBAを学ぶという本書の学習スタイルにおいて、適切なプロンプトを書くことがいかに重要であるかを理解し、そのための具体的なテクニックを一つずつ身につけてきました。
- AIに意図を正確に伝えるための良いプロンプトに含めるべき要素(目的、背景、役割、形式、具体例など)
- 複雑な要望や問題を解決するために、AIとステップを踏んでやり取りする**「段階的に教えて」テクニック**
- AIの回答が期待通りでなかった場合に、より良い答えを引き出すための**「プロンプト強化法」**
- AIの回答を鵜呑みにせず、特に実行結果について必ず検証することの重要性、そして**「わかったつもり」と「たぶんあってる」の決定的な違い**
さらに高度なAI活用につながる、プロンプト作成の発展的な考え方と実践に役立つテンプレート
これらのプロンプト術は、AIを単なる検索ツールとしてではなく、あなたの状況やレベルに合わせて柔軟にサポートしてくれる、まさに「自分だけのVBA先生」や「優秀なプログラミングアシスタント」として使いこなすための鍵となります。AIとの対話を通じて学び、試行錯誤を重ねることで、あなたのVBAスキルは着実に向上していくでしょう。
※本記事の作成にあたっては、生成AI(ChatGPT、Gemini、Claude)を活用し、文章および引用データの作成を行っています。最終的な内容は人間による確認・編集を経て掲載しています。
同じテーマ「AI×VBAで“書かない自動化”」の記事
AI時代のExcel革命:AI×VBAで“書かない自動化”超入門
第1章:AIって一体何?あなたのExcel作業をどう変える?(AI超基本)
第2章 VBAって怖くない!Excelを「言葉で動かす」(超入門)
第3章:AIを「自分だけのVBA先生」にする!質問・相談の超実践テクニック
第4章:【事例で学ぶ】AIとVBAでExcel作業を劇的に効率化する!
第5章:AI×VBAでつまづかない!トラブルシューティングとAIとの付き合い方
第6章:AIとVBAを学び続ける!あなたの「超効率化」を止めないヒント
新着記事NEW ・・・新着記事一覧を見る
第6章:AIとVBAを学び続ける!あなたの「超効率化」を止めないヒント|生成AI活用研究(2025-05-22)
第5章:AI×VBAでつまづかない!トラブルシューティングとAIとの付き合い方
|生成AI活用研究(2025-05-21)
第4章:【事例で学ぶ】AIとVBAでExcel作業を劇的に効率化する!
|生成AI活用研究(2025-05-20)
第3章:AIを「自分だけのVBA先生」にする!質問・相談の超実践テクニック|生成AI活用研究(2025-05-19)
第2章 VBAって怖くない!Excelを「言葉で動かす」(超入門)|生成AI活用研究(2025-05-18)
第1章:AIって一体何?あなたのExcel作業をどう変える?(AI超基本)|生成AI活用研究(2025-05-18)
AI時代のExcel革命:AI×VBAで“書かない自動化”超入門|生成AI活用研究(2025-05-17)
Geminiと100本ノック 23本目:シート構成の一致確認|生成AI活用研究(5月16日)
AIが問う出版の未来は淘汰か進化か:AIと書籍の共存の道とは|生成AI活用研究(2025-05-16)
Geminiと100本ノック 22本目:FizzBuzz発展問題|生成AI活用研究(5月15日)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.繰り返し処理(For Next)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
5.ひらがな⇔カタカナの変換|エクセル基本操作
6.RangeとCellsの使い方|VBA入門
7.メッセージボックス(MsgBox関数)|VBA入門
8.セルのクリア(Clear,ClearContents)|VBA入門
9.FILTER関数(範囲をフィルター処理)|エクセル入門
10.条件分岐(Select Case)|VBA入門
- ホーム
- 生成AI活用研究
- AI×VBAで“書かない自動化”
- 第3章:AIを「自分だけのVBA先生」にする!質問・相談の超実践テクニック
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。