hy clear Blog

Python In ExcelのTips

2024/07/19

2024/09/18

📰 アフィリエイト広告を利用しています

はじめに

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

Microsoft® Excel® for Microsoft 365 MSO (バージョン 2409 ビルド 16.0.18025.20030) 64 ビット

処理の実行

処理の実行方法

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

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

関数入力欄に入力する

=PY()

データの取得

セルの値を取得する

セルの値の取得には 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エラーがでる)