
Copilot(AI)の有効活用 試してみた
以前、業務中にふと、ネットにある情報をまとめることができるなら、こんな使用方法はどうだろう?と思ったネタがあった。
思いついた利用方法
①部品とか、ネットにあるものの仕様をリスト化させること
②Excelの関数を教えてもらうこと
③②の応用で、VBAを組んでもらうこと
結果、いずれもできた。
また、AIには、的確な指示が出せれば、明確な返答が来るので、例えば、「AというシートのA列に記載されている内容を、BというシートのCという列にコピーして転記してほしい。」とか、Aという部品と、Bという工具と、Cというメーカーの●●するための器具を購入検討しているが、これらの定価と、現在再安価で購入できるショップを出してほしい、なおかつ、その値段と、届くまでのおおよその期間を表に出力してほしい。など具体的な、「何をどうしてほしい」などの指令が出せれば、たいていの表での出力ができた。
まず、箇条書きや表で出してもらうことで、文章でずらっと提示されるよりも、こちらとしても、わかりやすいので、初回の指令時点で、表にして出力とか、箇条書きで出力とかの条件で、回答させる。
そのあとで、無駄を削っていけばいいし、不足情報は、出力させた回答に対して、「下記も追加して再出力して」などといえば、さらに自分の出したい情報をカスタマイズして絞り込んでいくことができる。
ここで、一つ思ったのが、何をどうしたいか?を指示できれば、Excelの座標指定、で関数やVBAが組めるのではないか?ということ。
現状、ネットに、このBVAをコピペして、ハイライト箇所を任意の文字列などに変換することで、すぐに使用できます。といった便利な簡易VBAは結構転がっているけど、それは本当にごく一部の利用用途にしか使えないので、あまり応用性がない。
実際、仕事中に、毎回毎回この工程面倒くさいな…といった、単純だけど、関数だけではどうにもさばけないExcelの面倒作業のケースがあった。
例えば、CSVで出力すると、データベース側で、●年度●月●日のような構造で、出力したテキストデータは、日付の数値が240526のような24年の5月26日みたいな形式、これ、「&関数で「20&数値セル」で見た目は20240526みたいに変換できても、セルをクリックして中の数値を見ると結局、240526に戻っている。
そして厄介なことに、セルの書式を日付に設定してしまうと、490526みたいになってしまって、日付に治ると9999/05/26みたいになってしまって、どうにも…
結局、ずっと手入力していたのだが、ある日ふと、Copilotで
「作業用のシート●列の240526のような数値を2024/05/26の形式に変換し、●列の数値が入っている最後の行までで作業を停止」するVBAを組んで
と入力してみたところ、見事、成功。
なお、初回では、Copilotでの文書形式で出力されてしまうので、「Excelで使用したいので、上記のコードをテキストデータで出力して」と命令すると、コピペすれば使用できるテキストで返してくれる。
これを応用して、複雑なVBAも組むことができた。
例えば、Aというシートで「SS」というボタンを押したら、AのシートのB列に●●●という関数(ドルマークで絶対参照してずれないように設定した関数)を入力し、●列のデータが入っている最下業でその関数の入力を停止し、(どこまでも入力され続けるとエラーになったり重くなったりクラッシュするので終着点を設定)AのシートのR列に回答を返すようなVBAを組んで、テキストで出力し、ペーストするだけにして。
のように、具体的に、シートの名称と、座標と、何をしたいかを明確に指示すれば、コードを組んでくれることに気が付いた。
なお、Copilotは現状、データのインポートはできないので、より具体的に指示しないと、コードは組めないし、ちょこちょこミスはするので、少しずつ修正する必要性は出てくるが、例えば、出力したコードをVBAで起動し、どこで突っかかっているかテストすれば、その結果をCopilotに「こうなったので、これを改善するようにコードを再構築」などと微調整を重ねれば、言語がわからなくても、コードを組めるという有用性に気が付きました。
要は、本来なら、言語を勉強し、組み方を勉強しないと、VBAは組めないのに、だれでも具体的な指示が出せればネットさえあれば組めるようになったということ。
もちろん、言語がわかっている人より別な手間は発生しますが、毎回毎回この作業がめんどくさい
って問題を、解決することが誰にでもできる可能性が出てきたことに少し驚いています。
もうすでに試されている人もたくさんいるかもしれませんが…w
道筋を具体的に記す必要があるのが手間
上記の画期的な有用性ですが、唯一、まだちょっとなというところは、何分、自分で理解する、読解するというところに関してはまだ発展途上なので、より具体的に、細かく、どこに何をどのように、何を参照して、どう計算して、どんな形で、どこに、どんな風に、どこまで返すか。を逐一説明してあげないと、エラー多発のVBAが組まれます。
なので、サクッと思った通りの関数がものの数分で組めるかというとそこはまだ…
実際、CSVで出したデータを
別のシートに転記させ、転記させたシート上で、会社独自の商品コードに変換させるために、指定した列にVlookをかけ、それを指定した行まで計算させ、そのvlookでふるいにかけた結果、エラーで帰ってきた分は、まだ手作業でどうにかしなければいけませんし、
●●という名称のボタンを押したら、●●という名称で登録したコードを起動するように組みたいので、●●という名称でコードを登録し、それを地道にAIに修正してもらう、みたいなtry&errorみたいな、項数はまだあります。
そして、どこにどうしたいというイメージを的確に思いつけなければ組むこともままなりませんので、そこは誰でも簡単にとはいかないかもしれません。
Excel苦手で、どこに何を返すのかってのをイメージできない人にはまだ難しいかもしれない。
でも、指令を細かくすることで、下記はできました
①ボタンに名称をつけ、そのボタンを押すことで、商品コー ドをvlookで検索し、指定した列に回答を出させる
②指定した列の数列を指定した形に変えるようにするコードを組ませる
③複数のシートを合わせ、最終的に合わさったbookを指定したフォルダに指定した名称で保存させる
→指定したセルに入っている文字列でフォルダ保存することで、任意のファイル名で保存させることができる
④コード表を開いた状態で、ボタンを押せば、参照を開始し、指定したシートの指定した列にその参照結果を返す
上記を組み合わせ、最終的に自動保存するExcelbookの作成などもできましたので、おそらく、具体的に細かい指示ができて、修正をめんどくさがらず行えば、型がきまったCSVに対しての、ルーチンワークなどは、ある程度、VBAで作業工数を減らすことができるのではないでしょうか。
毎回変わるような作業に適応するのは難しいですが、
そもそもExcelの関数もVBAも毎回変化するようなことに対しては向いていない仕様ですので、ルーチンに対しての有用性はでかいと感じています。
なお、情報流出が騒がれている昨今ですので、Aiを利用の際は、具体的な座標指示はAIに流してもよいですが、情報ソース的なものは流さないようにご注意を!(といっても現状、画像以外の流し込みできないので問題ないと思いますが)