なんでもぶろぐ

ゲームやプログラムなど作ったものや学習したものをまとめておくブログ

Python In Excelの基本

※すべて自己責任でお願いします。Pythonの実行はローカルのPCではなく、すべてクラウド上で行われるため重要なデータの場合は特に注意が必要かもしれません。
Excelバージョン 2311 ビルド 16.0.17005.20000

環境構築

Python In Excelを使用するにはInsider版を使用する必要があります。
設定方法は以下のページで解説しています。
knut.hatenablog.jp

実行方法

Pythonの実行は関数と同じようにセルに対して設定できます。
挿入したいセルを選択し、以下のどちらかで挿入できます。

  • 数式>Pythonの挿入を選択する

Python挿入

  • 関数入力欄に入力する
=PY(

正しくは =PY() と入力するはずですが =PY( を入力した段階でPythonセルになります。

セルの値を取得する

セルの値の取得には xl() を使用します。Excel関数と同様にマウスクリックでも値を選択できます。

  • 一つのセルを取得する
xl("A1")

文字の場合はstring型、数値の場合はint型などが返されます。

  • 範囲のセルを取得する
xl("B1:C4")

DataFrame型を返します

  • テーブルの値を取得する
xl("テーブル1[#すべて]", header=True)

DataFrame型を返します
headerをTrueにすると最初の行がヘッダーとなります

出力の種類

セルの演算結果としてPythonオブジェクトかExcelの値かを選択できます。
以下の画像のように入力の左側で選択できます。

Pythonオブジェクトを選択すると出力されるPythonオブジェクトの型がセルに表示されます。
Excelの値を選ぶとデータが展開されます。以下の画像はテーブルのデータを取得し、PythonオブジェクトとExcelの値で表示している例です。

ここで注意が必要なのがExcelの値を選択しても、処理としてPythonを使用していることです。
ぱっと見ではPythonで処理したデータか打ち込んだデータかわかりずらいです。
そのため、後述する処理の順序において、はまりポイントになりがちです。

処理の順序

Python In Excelでは複数のPythonセルがあるときは既定の順序に従って処理されていきます。
このとき処理が終わっていないセルを参照してしまうと循環参照となりエラーが起きます。
そのため、処理の順序を意識することでバグを減らせると思います。

関数内の順序

Pythonセル内の処理は上から下に順番に処理されます。
また、最下行の処理の結果が返されます。

セルの処理順序

あるシート内において、Pythonセルが複数ある場合は初めにA1、B1と行の左から順番に実行されていきます。1行目が終わると2行目のA2、B2と処理されていきます。
そのため、画像のように処理が終わっていないセルを参照してしまうと循環参照のエラーとなります。

シートの処理順序

左から順番に処理が実行されていきます。
Sheet2からSheet1のデータを取得している場合、シートの位置を入れ替えてしまうと循環参照のエラーになります。

計算方法の設定

デフォルトではセルの依存値が変更されると、すべてのPythonセルは自動で再計算されます。
計算方法の設定を変更すると自動計算されなくなり、手動での再計算ができるようになります。

一部と手動の違いはわかりませんでした。

その他の注意点

Python内でネットワーク通信はできない(400エラーがでる)