AI時代のExcel活用術|ChatGPTで関数・マクロを自動生成する方法

excel-chatgpt-guide AI活用術

Excel作業が10倍速くなる: ChatGPT活用術

Excelで複雑な関数を組もうとして、ネット検索を繰り返した経験はありませんか。VLOOKUP、SUMIFS、INDEX+MATCH…必要なことは分かっているのに、正確な構文が思い出せない。サンプルコードをコピペしても、自分のデータに合わせる方法が分からない。

ChatGPTを使えば、こうした悩みは一瞬で解決します。「こういう計算がしたい」と日本語で伝えるだけで、正確な関数やマクロが生成されます。

この記事では、ChatGPTを使ったExcel作業の効率化方法を、実践的なプロンプト例とともに解説します。

今すぐExcel × AI活用を始めたい方へ

Excel関数やVBAを効率的に学びたい方には「Excel VBA 超入門」がおすすめです。マクロの基礎から実践まで体系的に学べます。

楽天で見る | Amazonで見る

ChatGPTでできるExcel作業

まず、ChatGPTがExcelに対してどんなサポートができるか整理しましょう。

1. 関数の自動生成

複雑な関数を日本語の説明から自動生成できます。

  • VLOOKUP、XLOOKUP
  • SUMIFS、COUNTIFSなどの集計関数
  • INDEX+MATCHの組み合わせ
  • IF関数のネスト
  • 配列数式

2. VBAマクロの作成

繰り返し作業を自動化するマクロを生成できます。

  • データ整形・クレンジング
  • 複数シートの集計
  • ファイル操作の自動化
  • レポート生成

3. 数式のエラー解析

動かない数式の原因を特定し、修正案を提示します。

4. データ構造の設計アドバイス

効率的な表の設計方法を提案します。

それでは、具体的な使い方を見ていきましょう。

関数生成: 実践プロンプト例

パターン1: VLOOKUP / XLOOKUP

やりたいこと: 別シートから商品名を検索して価格を取得

プロンプト:

Excelで以下の処理をしたいです。適切な関数を教えてください。

【状況】
- シート「注文」のA列に商品コードがある
- シート「商品マスタ」のA列に商品コード、B列に商品名、C列に価格がある
- シート「注文」のB列に、商品コードに対応する価格を表示したい

【条件】
- 商品コードが見つからない場合は「該当なし」と表示
- Excel 2019を使用(XLOOKUP使用可能)

ChatGPTの回答例:

XLOOKUP関数を使用します。シート「注文」のB2セルに以下の数式を入力してください。

=XLOOKUP(A2,商品マスタ!A:A,商品マスタ!C:C,"該当なし")

【説明】
- A2: 検索する商品コード
- 商品マスタ!A:A: 検索範囲(商品マスタシートのA列)
- 商品マスタ!C:C: 取得する列(価格列)
- "該当なし": 見つからない場合の表示

※Excel 2016以前の場合はVLOOKUPを使用します:
=IFERROR(VLOOKUP(A2,商品マスタ!A:C,3,FALSE),"該当なし")

パターン2: 複数条件での集計(SUMIFS)

やりたいこと: 特定の期間・部署の売上合計を計算

プロンプト:

Excelで複数条件に合致するデータの合計を求めたいです。

【データ構造】
A列: 日付
B列: 部署名
C列: 売上金額

【条件】
- 2024年1月1日〜1月31日
- 部署名が「営業部」
- 上記2つの条件を満たす売上金額の合計を求める

ChatGPTの回答例:

SUMIFS関数を使用します。

=SUMIFS(C:C, A:A, ">=2024/1/1", A:A, "<=2024/1/31", B:B, "営業部")

【説明】
- C:C: 合計する列(売上金額)
- A:A, ">=2024/1/1": 1つ目の条件(日付が2024/1/1以降)
- A:A, "<=2024/1/31": 2つ目の条件(日付が2024/1/31以前)
- B:B, "営業部": 3つ目の条件(部署名が営業部)

【より柔軟な方法】
日付をセル参照にする場合:
=SUMIFS(C:C, A:A, ">="&D2, A:A, "<="&E2, B:B, F2)
※D2に開始日、E2に終了日、F2に部署名を入力

パターン3: ネストされたIF文

やりたいこと: スコアに応じて評価ランクを付ける

プロンプト:

Excelで以下のような条件分岐をしたいです。

A列にスコア(0〜100)があります。
B列に以下の評価を表示したい:
- 90以上: S
- 80〜89: A
- 70〜79: B
- 60〜69: C
- 60未満: D

ChatGPTの回答例:

IFS関数を使用すると簡潔に書けます(Excel 2019以降)。

=IFS(A2>=90,"S", A2>=80,"A", A2>=70,"B", A2>=60,"C", A2<60,"D")

【Excel 2016以前の場合】
ネストされたIF関数を使用:
=IF(A2>=90,"S",IF(A2>=80,"A",IF(A2>=70,"B",IF(A2>=60,"C","D"))))

【より読みやすい方法】
VLOOKUP+テーブルを使う方法もあります。別途説明しますか?

パターン4: INDEX + MATCH(縦横検索)

やりたいこと: 行と列の条件で値を取得

プロンプト:

Excelで縦横のクロス集計表から値を取得したいです。

【データ構造】
   A列  B列  C列  D列
1行     東京  大阪  名古屋
2行 商品A 100  120  110
3行 商品B 150  140  160

【やりたいこと】
- E2セルに商品名を入力(例: 商品B)
- E3セルに地域名を入力(例: 大阪)
- E4セルに該当する売上を表示したい(この例では140)

ChatGPTの回答例:

INDEX+MATCH関数の組み合わせを使用します。E4セルに以下を入力:

=INDEX(B2:D3, MATCH(E2,A2:A3,0), MATCH(E3,B1:D1,0))

【説明】
- B2:D3: 取得する範囲(数値が入っているエリア)
- MATCH(E2,A2:A3,0): 商品名の行番号を検索
- MATCH(E3,B1:D1,0): 地域名の列番号を検索
- INDEX関数で該当セルの値を取得

【エラー処理を追加する場合】
=IFERROR(INDEX(B2:D3, MATCH(E2,A2:A3,0), MATCH(E3,B1:D1,0)), "該当なし")

VBAマクロの自動生成

繰り返し作業はVBAマクロで自動化できます。プログラミング経験がなくても、ChatGPTに日本語で説明するだけでマクロが生成されます。

Excel業務をさらに効率化するには

Excel関数やマクロと合わせて、プログラミングスキルも習得すると業務効率が大幅に向上します。

特徴 内容
Python×Excel自動化 大量データ処理を完全自動化
実践的カリキュラム 業務で即使えるスキル習得
キャリアアップ DX人材として市場価値向上

DMM WEBCAMP 無料カウンセリングに申し込む(5分で完了)

パターン1: データ整形マクロ

プロンプト:

ExcelのVBAマクロを作成してください。

【やりたいこと】
1. A列のデータから空白セルの行を削除
2. B列のデータを全角→半角に変換
3. C列の日付形式を「yyyy/mm/dd」に統一
4. 処理後にメッセージボックスで「完了」と表示

【条件】
- 対象はSheet1
- データは2行目から始まる(1行目はヘッダー)
- コメント付きで分かりやすく

ChatGPTの回答例:

Sub データ整形()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim i As Long

    ' Sheet1を対象に設定
    Set ws = ThisWorkbook.Sheets("Sheet1")

    ' 最終行を取得
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

    ' 下から上に向かってループ(行削除のため)
    For i = lastRow To 2 Step -1
        ' A列が空白の場合、行を削除
        If ws.Cells(i, 1).Value = "" Then
            ws.Rows(i).Delete
        End If
    Next i

    ' 最終行を再取得
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

    ' B列を全角→半角に変換
    For i = 2 To lastRow
        If ws.Cells(i, 2).Value <> "" Then
            ws.Cells(i, 2).Value = StrConv(ws.Cells(i, 2).Value, vbNarrow)
        End If
    Next i

    ' C列の日付形式を統一
    For i = 2 To lastRow
        If IsDate(ws.Cells(i, 3).Value) Then
            ws.Cells(i, 3).NumberFormat = "yyyy/mm/dd"
        End If
    Next i

    ' 完了メッセージ
    MsgBox "データ整形が完了しました", vbInformation
End Sub

【使い方】
1. Alt + F11でVBAエディタを開く
2. 挿入 → 標準モジュール
3. 上記コードを貼り付け
4. Alt + F11でExcelに戻る
5. Alt + F8 → 「データ整形」を選択して実行


### パターン2: 複数シート集計マクロ

**プロンプト:**

ExcelのVBAマクロを作成してください。

【やりたいこと】
– ブック内の全シート(「集計」シートを除く)のB列の合計を計算
– 結果を「集計」シートのA列にシート名、B列に合計値として出力

【条件】
– 各シートのB列2行目から最終行までを集計対象
– 「集計」シートがない場合は新規作成
– 既存データがある場合はクリアしてから出力


**ChatGPTの回答例:**
```vba
Sub 全シート集計()
    Dim ws As Worksheet
    Dim summaryWs As Worksheet
    Dim lastRow As Long
    Dim total As Double
    Dim outputRow As Long

    ' 集計シートの確認・作成
    On Error Resume Next
    Set summaryWs = ThisWorkbook.Sheets("集計")
    On Error GoTo 0

    If summaryWs Is Nothing Then
        Set summaryWs = ThisWorkbook.Sheets.Add
        summaryWs.Name = "集計"
    Else
        ' 既存データをクリア
        summaryWs.Cells.Clear
    End If

    ' ヘッダー作成
    summaryWs.Cells(1, 1).Value = "シート名"
    summaryWs.Cells(1, 2).Value = "合計"

    outputRow = 2

    ' 全シートをループ
    For Each ws In ThisWorkbook.Sheets
        ' 集計シート自身はスキップ
        If ws.Name <> "集計" Then
            ' 最終行を取得
            lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row

            ' B列の合計を計算(2行目から)
            If lastRow >= 2 Then
                total = Application.WorksheetFunction.Sum(ws.Range("B2:B" & lastRow))

                ' 集計シートに出力
                summaryWs.Cells(outputRow, 1).Value = ws.Name
                summaryWs.Cells(outputRow, 2).Value = total

                outputRow = outputRow + 1
            End If
        End If
    Next ws

    ' 列幅を自動調整
    summaryWs.Columns("A:B").AutoFit

    MsgBox "集計が完了しました", vbInformation
End Sub

> **VBAマクロを本格的に学びたい方へ**
>
> ChatGPTと組み合わせてさらに効率化したい方には「**できるExcel マクロ&VBA**」がおすすめです。
>
> - シリーズ累計7500万部の人気書籍
> - 初心者でも挫折しにくい解説
>
> → [楽天で見る](https://af.moshimo.com/af/c/click?a_id=2821673&p_id=1555&pc_id=2816&pl_id=22961&url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2FExcel%20VBA%20%E6%95%99%E6%9C%AC%20%E5%85%A5%E9%96%80%2F) | [Amazonで見る](https://af.moshimo.com/af/c/click?a_id=5765498&p_id=170&pc_id=185&pl_id=4062&url=https%3A%2F%2Fwww.amazon.co.jp%2Fdp%2F4295003069)

### パターン3: ファイル出力マクロ

**プロンプト:**

ExcelのVBAマクロを作成してください。

【やりたいこと】
– 現在のシートをCSVファイルとして保存
– ファイル名は「データ_YYYYMMDD.csv」形式(日付は実行日)
– 保存先はデスクトップ
– 保存後に「〇〇に保存しました」とメッセージ表示


**ChatGPTの回答例:**
```vba
Sub CSV出力()
    Dim fileName As String
    Dim filePath As String
    Dim today As String

    ' 今日の日付を取得(YYYYMMDD形式)
    today = Format(Date, "YYYYMMDD")

    ' ファイル名を作成
    fileName = "データ_" & today & ".csv"

    ' デスクトップのパスを取得
    filePath = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\" & fileName

    ' CSVとして保存
    ActiveSheet.Copy
    With ActiveWorkbook
        .SaveAs fileName:=filePath, FileFormat:=xlCSV, CreateBackup:=False
        .Close SaveChanges:=False
    End With

    ' 完了メッセージ
    MsgBox filePath & " に保存しました", vbInformation
End Sub

## 数式エラーの解析

動かない数式をChatGPTに診断してもらうこともできます。

**プロンプト例:**

以下のExcel数式がエラーになります。原因と修正方法を教えてください。

【数式】
=VLOOKUP(A2,Sheet2!A:B,3,FALSE)

【エラー】

REF!

【状況】
– Sheet2には2列(A列とB列)しかない
– A2には検索値が入っている


**ChatGPTの回答:**

REF!エラーの原因は、VLOOKUP関数の第3引数(列番号)が範囲外を指定しているためです。

【問題点】
– 検索範囲は Sheet2!A:B(2列のみ)
– しかし列番号に「3」を指定(3列目を取得しようとしている)
– 存在しない列を参照しているため#REF!エラー

【修正方法】
B列の値を取得したい場合、列番号を「2」に変更:
=VLOOKUP(A2,Sheet2!A:B,2,FALSE)

【補足】
VLOOKUPの列番号は、検索範囲の左端を「1」とした相対位置です。
範囲がA:Bの場合:
– 1列目 = A列
– 2列目 = B列
“`

ChatGPT活用時の注意点

1. 生成された数式は必ずテストする

ChatGPTの出力は必ずしも完璧ではありません。少量のテストデータで動作確認してから本番データに適用してください。

2. データ構造を正確に伝える

「A列に名前、B列に金額」といった具体的な情報を伝えると、精度が上がります。可能ならサンプルデータも提示しましょう。

3. Excelのバージョンを明記する

XLOOKUP、IFS、FILTER等は新しいバージョンでしか使えません。使用中のExcelバージョンを伝えておくと、互換性のある関数を提案してくれます。

4. マクロは段階的にテストする

VBAマクロは元に戻せない処理が多いため、必ずバックアップを取ってからテストしてください。

5. セキュリティ設定を確認

マクロを実行するには、Excelのセキュリティ設定で「マクロを有効にする」必要があります。

設定方法:
1. ファイル → オプション → セキュリティセンター
2. セキュリティセンターの設定 → マクロの設定
3. 「警告を表示してすべてのマクロを無効にする」を選択(推奨)

よくある質問

Q1. ChatGPTで生成した関数が動かない場合は?

エラーメッセージと数式をそのままChatGPTに伝えて「このエラーの原因と解決策を教えて」と聞いてください。多くの場合、修正案が提示されます。

Q2. 複雑なマクロでも対応できる?

基本的な処理は十分対応可能です。ただし、非常に複雑な業務ロジックや外部API連携などは、人間のレビューが必須です。

Q3. Google スプレッドシートでも使える?

Excelとは関数名が一部異なります。プロンプトに「Google スプレッドシート用」と明記すれば、対応する関数を提案してくれます。

Q4. 生成されたコードの著作権は?

ChatGPTが生成したコードは、基本的に自由に使用できます。ただし業務で使用する場合は、所属組織のAI利用規定を確認してください。

まとめ: Excel × ChatGPTで作業時間を劇的に短縮

ChatGPTを活用すれば、これまで30分かかっていた関数作成が3分で終わります。マクロも専門知識なしで作成できます。

今日から実践できること:
– [ ] 複雑な関数が必要になったら、まずChatGPTに聞く
– [ ] 繰り返し作業が発生したら、マクロ化を検討
– [ ] エラーが出たら、ChatGPTに原因を診断してもらう
– [ ] 生成されたコードは必ずテストしてから本番適用

Excel作業の効率化は、日々の積み重ねが大きな時間短縮につながります。明日の業務から、ぜひ試してみてください。


さらに深く学ぶには

【PR】

📚 書籍で体系的に学ぶ

入門者向け: 「面倒なことはChatGPTにやらせよう」
– Amazon ★4.5(800件以上のレビュー)
– ChatGPT活用の基本が分かる
– Excel以外の活用法も豊富

楽天で見る | Amazonで見る

Excel特化: 「Excel VBA 超入門」
– マクロの基礎から応用まで
– サンプルファイル付き

楽天で見る | Amazonで見る

🎓 資格取得でスキルを証明

Excel力を客観的に証明したいなら、MOS資格がおすすめです。

ユーキャン MOS講座
– 自宅で学べる通信講座
– 模擬試験付きで本番対策も万全

資料請求無料詳細を見る

おすすめ書籍

AIツールの活用スキルをさらに高めたい方におすすめの一冊です。

『ChatGPT最強の仕事術』 池田朋弘(1,870円)

ChatGPTを仕事で本格的に使いこなすための実践テクニックが満載。プロンプト設計から業務自動化まで幅広くカバーしています。


関連記事
【2026年最新】ChatGPT使い方ガイド|初心者向けに始め方から活用術まで解説
ChatGPTプロンプト完全ガイド
AIで業務効率化する方法

コメント