Python in Excelを使い始めると、思ったように動かないエラーに戸惑うことがよくあります。
変数が見つからない、型が合わない、xl() の参照がうまくいかないなど、原因が分かりにくいケースも少なくありません。
この記事では、Python in Excelでよくあるエラーとその考え方、基本的なデバッグのポイントを初心者向けに整理して解説します。
Python in Excelの導入については以下の記事を参考に。
初心者向けPython:Excel作業を自動化したい人のためのPython in Excel – Lean Data Office
#SPILL!

#SPILL!はPythonオブジェクトをExcel値に変換しようとしたときに、埋めようとしたセルにすでに値が入っていることで展開を妨げているときに出るエラーです。
※Excelを日本語に設定しているので、「スピル」とエラーが出ていますが同義です。

注意マークから、「阻害しているセルを選択」を押すと、阻害しているセルを示してくれるので、それを消すことでSpillエラーを解除できます。

#PYTHON!
#PYTHON!エラーは、Pythonコード自体に問題がある場合に発生します。
意図的に問題を起こすコードを書いてみます。


エラーメッセージを表示を選択することで、その内容を確認することができます。


型違いでエラーを起こしていることがわかります。
print()メソッドを使用して画面右の診断パネルにprint()で示した内容を出力することも可能です。

0で割ることでエラーを起こしています、実際の計算の前に変数をprint()メソッドで確認できるようにしてみましょう。

依然、y=0で割るのでエラーは変わりませんが、診断画面で、print()メソッドで指定した内容を出力することができています。これで、よりエラーに対してのデバッグやトラブルシューティングが容易になります。

その他のエラー
Python in Excelはクラウド上で実行されるので、Pythonのクラウドサービスに接続できない問題が発生している場合に#CONNECT!エラーが発生します。エクセルを立ち上げてしばらくこのエラーが続くこともありますが、接続が成功すると、エラーは解除されます。

#BUSY!は実行中を示しています。実行後は値を正常に返します。

NoneまたはNoneTypeはコードの最終行が値を返していないことを示します。
主な例として、セル内でモジュールをインポートしたが、値を返していないケースです。この例では、mathモジュールをインポートするセルを実行してみます。
mathをインポートしましたが、値が何も帰っていないので”None”エラーを表示します。

しかしながら、Importのみを実行するセルでも、明示的にそのセルが何を実行しているかを示すことが可能です。

これで返すセルを明示的に示し、エラーを回避することができるうえ、セルで実行しているImportの内容も示すことができました。
Importを実行するセルに返す値がない場合のベストプラクティスとして参考にしてみてください。
まとめ
Python in Excelのエラーは、Pythonの基本ルールとExcel特有の挙動を理解することで、多くが自分で解決できるようになります。
エラーメッセージの読み方やセル参照や型の違いに注意することが重要です。
まずは「どこで」「なぜ」エラーが起きているのかを落ち着いて確認し、小さく試しながら修正していくことが、Python in Excelを使いこなす近道と言えるでしょう。