【AIマクロ探究シリーズ#1】AIでマクロにチャレンジ! 面倒なセル結合の解除とデータ入力を自動化してみよう

AI

皆さん、こんにちは! 下町AI探究者のガジュマロです。

いつもブログを読んでくださり、本当にありがとうございます。

さて、今日から新しいシリーズ「AIマクロ探究シリーズ」を始めてみたいと思います! このシリーズでは、AIの力を借りて、私たちの日常業務をちょっと楽にしてくれるかもしれないExcelマクロの世界を探求していきます。

以前、「AIでExcelマクロ入門!初心者向け基本と注意点【基本編】」という記事で、AIを使ってマクロを作る際の基本的な考え方や、気をつけたいポイントについてお話ししました。また、操作方法や保存方法など、具体的に使う方法についてもお伝えしました。

今回は実践編として、具体的な「お悩み解決」にAIと一緒に挑戦してみたいと思います。テーマは、Excel作業で「あー、これ、ちょっと面倒だな」と感じがちな、「結合されたセルの扱い」です。

Excelの「セル結合」、便利だけど後で困ることも…?

Excelで表を作成するとき、見た目を整えるために「セルを結合して中央揃え」って、よく使いますよね。例えば、部署名やカテゴリ名を複数の行にまたがって表示させたいときなど、確かに見やすくなります。

でも、この結合されたセルを含む表を後でデータとして活用しようとすると、少し困ったことが起きませんか?

例えば、この表を並べ替えたり、フィルタをかけたり、あるいは別のシステムにデータを取り込んだりしようとすると、うまくいかないことがあります。
それは、Excelの標準機能でセル結合を解除すると、結合されていた範囲の一番左上のセルにしか元の値が残らず、他のセルは空白になってしまうからです。

これだと、データとしては不完全ですよね。「営業部」のデータが一部しか残っていない状態です。一つ一つ手作業でコピー&ペーストしていくのは…正直、かなり手間がかかります。特に、表が大きい場合はなおさらです。

便利なようで、ちょっと困る。そんな場面、皆さんも経験されたことがあるのではないでしょうか。

「面倒な作業はAIにお願いしてみよう!」

そこで、今回の主役、AIの登場です。
「この面倒な作業を自動化するマクロを、AIに作ってもらえないだろうか?」

【基本編】で学んだように、まずは具体的な指示でAIにお願いしてみることにします。

今回、私が使ったAI(例えばChatGPTやGemini、Copilotなど、皆さんが使いやすいもので大丈夫だと思います)に、こんな風にお願いしてみました。

【AIへのお願い(プロンプト)例】

行ったお願いはこちら

Excel VBA マクロを作成してください。
セルの結合をすべて解除し、解除後にできた個々のセルすべてに、結合されていた時の値を入力するようにしてください。また、汎用性があるようにお願いします

とてもシンプルなお願いですが、これでAIが意図を汲み取ってくれるか、少しドキドキしますね。

AIが作ってくれたマクロコードはこちら!
Sub UnmergeAndFill()
    Dim rng As Range
    Dim mergedArea As Range
    Dim cell As Range
    Dim originalValue As Variant

    ' 選択範囲がセル範囲かチェック
    If TypeName(Selection) <> "Range" Then
        MsgBox "セル範囲を選択してから実行してください。", vbExclamation
        Exit Sub
    End If

    ' 処理高速化のおまじない
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual

    ' 選択された範囲を処理対象とする
    Set rng = Selection

    ' 選択範囲内の各セルをループ
    For Each cell In rng
        ' セルが結合されているかチェック
        If cell.MergeCells Then
            ' 結合範囲を取得
            Set mergedArea = cell.MergeArea
            ' 結合セルの値を取得
            originalValue = mergedArea.Cells(1, 1).Value
            ' 結合を解除
            mergedArea.UnMerge
            ' 解除後の範囲に元の値を入力
            mergedArea.Value = originalValue
        End If
    Next cell

    ' 処理高速化のおまじない解除
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True

    MsgBox "処理が完了しました。", vbInformation
End Sub

AIはほんの数十秒から1分程度で、ちゃんと動くコードを提案してくれました。かかった時間は、実際にこのコードをExcelに貼り付けて試してみる時間を含めても、おそらく5分程度です。

これまで手作業でポチポチとコピー&ペーストしていた時間を考えると、このスピード感は本当に魅力的ですよね。面倒な作業から解放されるだけでなく、精神的に余裕を持った状態で、貴重な時間を他のことに使えるようにもなります。これぞ、AIを味方につける大きなメリットの一つと言えるのではないでしょうか。

このマクロのポイント(汎用性について)

今回AIが作ってくれたマクロは、「選択した範囲」に対して処理を行うようになっています。これがポイントですね。特定のシートや特定のセル範囲に限定せず、ユーザーが実行時に処理したい場所を選べるので、色々なファイルやシートで使い回しが効く、汎用性の高いマクロになっていると思います。
もしよかったらコピー&ペーストして、使ってみてください。

このマクロの使い方と注意点(【基本編】のおさらいも兼ねて)

「コードが出てきたけど、どうやって使うの?」という方のために、簡単な使い方と、使う上での注意点を【基本編】のおさらいも兼ねてお伝えします。

使い方ステップ:

  1. 【重要】ファイルをコピーする:
    まず、マクロを実行したいExcelファイルをコピーして、コピーしたファイルを開きます
  2. VBE(Visual Basic Editor)を開く:
    キーボードの Alt キーを押しながら F11 キーを押します。VBE画面が開きます。
  3. 標準モジュールを挿入:
    VBEのメニューバーから「挿入(I)」→「標準モジュール(M)」を選択します。右側に白い入力画面が表示されます。
  4. コードを貼り付け:
    上記の Sub UnmergeAndFill() から End Sub までをすべてコピーし、表示された白い画面に貼り付けます。
  5. マクロを実行したい範囲を選択:
    Excelのシートに戻り、結合を解除したいセルが含まれる範囲をマウスでドラッグして選択します。
  6. マクロを実行:
    再び Alt + F11 でVBEを開き、貼り付けたコードの中のどこかにカーソルを置いて F5 キーを押すか、「実行(R)」メニューから実行します。
  7. 完了確認と後片付け:
    「処理が完了しました。」というメッセージが表示されたら、OKをクリックします。Excelシートに戻って、選択した範囲の結合が解除され、ちゃんと値が入力されているか確認しましょう。

    さて、マクロの実行が終わった後の、ちょっとしたコツをお伝えします。
    • 今回だけ使えれば良い場合:
      マクロを実行した結果(結合が解除され、値が入力された状態)が反映されたExcelファイルを、普通に「上書き保存」すればOKです。この場合、マクロのコードはファイルに保存されません。(もちろん、マクロ有効ブックとして保存することも可能ですが、今回はその説明は割愛しますね)。作業に使ったVBEの画面は、右上の「×」で閉じてしまって大丈夫です。
    • このマクロを今後も他のファイルで使いたい場合:
      先ほどVBEに貼り付けたマクロのコード(Sub UnmergeAndFill() から End Sub まで)を、メモ帳やWord、あるいはテキストエディタなどにコピーして、「結合解除マクロ.txt」のような分かりやすい名前で保存しておくと良いです。そうすれば、次に使いたい時に、また使いたいExcelファイルでVBEを開いて、保存しておいたテキストファイルからコードをコピー&ペーストするだけで、すぐにこの便利な機能を使うことができます。

使う上での注意点(再確認):

  • まずは「コピーで試す」を徹底:
    VBA実行後は、状態を元に戻すこと (「アンドゥ」ですね) が出来ません。あ、しまった、は取り返せないので、かならずコピーで試してください。
  • AIのコードは完璧ではないかも、を念頭に:
    AIにより生成されたコードは、期待通りに動かないことや、特定の状況でエラーになる可能性があるという事を念頭に、お願いしましょう。上手くいかない場合は、解決方法を聞いたりお願いしなおしたりしてみましょう。
  • コードの意味を少しだけ覗いてみる:
    プログラミングに詳しくなくても、「なんとなく、選択範囲を一つずつ見て、結合されてたら解除して、元の値を入れてるんだな」くらいの流れを掴んでおくと、安心感が増しますし、応用する際のヒントになるかもしれません。今回のコードで言えば、For Each cell In rng で選択範囲をループし、If cell.MergeCells Then で結合セルか判断、mergedArea.UnMerge で解除、mergedArea.Value = originalValue で値を入力、という部分が中心的な処理ですね。
  • セキュリティーに注意:
    AIを使うと個人情報が心配? 知っておきたいこと、私たちができること」でお伝えした通り、AIサービスによっては、入力した情報(プロンプト)の取り扱われ方が違います。まずは、機密情報を含むファイルの内容などをプロンプトに入力するのは避けましょう。また、利用するAIサービスのプライバシーポリシーを確認するなど、セキュリティ意識を持つことを心掛けましょう。

まとめ:AIと一緒に、一歩ずつマクロの世界へ

今回は、「AIマクロ探究シリーズ」の第一弾として、AIにお願いしてExcelのセル結合解除の手間を解消するマクロを作成してみました。AIに頼めば、お願いからコード生成、そしてテストまで含めても5分程度で、これまで手作業で時間のかかっていた作業を自動化できる可能性があるというのは、大きな魅力ではないでしょうか。

また、「マクロなんて自分には…」と思っていた方も、AIという新しい相棒がいれば、日々のちょっとした、しかし煩わしい手間を効率化するスキルが、比較的楽に手に入ると感じていただけたかと思います。

このシリーズでは、これからもAIと一緒に様々なマクロ作成に挑戦し、その過程や発見を皆さんと共有していきたいと考えています。

それでは、次回の「AIマクロ探究シリーズ」でお会いしましょう!

コメント

タイトルとURLをコピーしました