Microsoft Copilot for Microsoft 365 Excel における VBA 生成が便利です

Microsoft 365 Apps の現在のチャネルでは、 Copilot for Microsoft 365 が利用できますが、その中でも Excel の Copilot を利用したことはありますか?

この Excel Copilot ですが、かなり面白い動作をするので紹介しておきたいと思います。

Excel の Copilot はシート上にテーブルがある状態で利用できるようになります。

日本では Excel 帳票という言葉もありますが、本来はデータを操作するというのが Excel だということを思い起こされますね。

テーブルを用意した状態で Copilot を起動するとこんな感じになります。

例えば「カテゴリーごとにテーブルを分ける VBA を記述してください。」と入れてみます。そう、 Copilot では VBA も書くことができるんですよね。

結果は以下のようになりました。

ひとつづつ見ていきましょう。

まず上部にどういった手順の動作となるかが日本語で書かれています。(念のためですが、 Copilot なので正しいかは自身で見ていく必要があることは注意しましょう。)

テーブル1の中でカテゴリ列は 2 列目。と言われています。

見てみると、こんな感じ。あっていますね。

続いてコードを見ていくと、テーブルを特定するためにシート名からワークシートを取得しています。このシート名は直接書き換えろ。となっていますね。つまり、 Copilot が書いたコードはそのままは使えなかった。ということです。

実際のシート名を見てみると今回は「 Sheet1 」というものでした。ここは書き換える必要がありますね。

そしてコードの続きを見ると、テーブル内のカテゴリ列( 2 列目)を目標にして Dictionary でハッシュテーブルを持たせる形になっています。シートのデータを集めてから動作させるという考え方ですね。

続いて Dictionary を使ってシートを生成しています。これはきちんとコードが書けていますね。

シートを作ったら A1 つまりは左上からデータをコピーしていっています。

ただ、ここでは元のテーブルデータを読み取りに行く流れになっており、1つのカテゴリシートを作るのにデータを全部チェックするという動きになっています。

これは結構効率の悪い方法ですが、間違った動きではないですね。

最後に注意書きが入っていますね。

既存のシート名と重複しないように。とありますが、重複があると確かにこの動きだとエラーになりそうです。

ではこのコードをシート名だけ書き換えて動かしてみましょう。

開発リボンから Visual Basic を選びます。開発リボンがない場合はオプションのリボンのユーザー設定から表示させましょう。

Visual Basic の記述が起動したらシート名の修正です。シート名の位置は反転させた場所ですね。

直し終わったら実行を押していきます。

結果、シートが追加され、そのシートにカテゴリの内容が転記されました。

カテゴリもちゃんと元あったところから取り出せていることが見えて取れます。

VBA が書ける人であれば、この Copilot を使わなくてもよい。と思われるかも知れません。

しかしながら VBA を日々使っているわけではない場合、書き方を思い出すのはちょっと大変です。時には Web を参照しながら組んでいくこともあるでしょう。

そういった作業を Copilot で代替させられるので、この機能だけでも実は Copilot for Microsoft 365 の意義があるのではないか。というくらいに使えると思います。

まだ VBA を作らせたことがない方はぜひ一度動かしてみてください!

音楽:Could You Bite the Hand?