はじめに

本記事では、2024年10月に一般ユーザ向けに正式リリースされた、
Excel上でPythonを実行できる機能「Python in Excel」を実際に導入して触ってみたので、導入方法や使い方をサンプルを交えながら紹介します。

Python in Excelとは

名前の通り、Excel上でPythonを実行できる機能です。
セルに直接Pythonコードを記述することができ、Microsoftクラウド上で実行され、結果がワークシートに返されます。
Excel操作の自動化ではなく、データ分析に重点を置いた機能です。

導入方法

導入はとても簡単です。

・必要な設定

特にありません。
Python in Excel 機能が提供されている契約プランに登録するだけで利用できます。

・対応プラン

「Microsoft 365 Business Standard / Premium」や、「Microsoft 365 E3 / E5」などです。
※2025/5 時点では「Microsoft 365 Personal」では利用不可でした。
公式ホームページ
(※筆者はホームページをちゃんと確認せずに「Microsoft 365 Personal」を契約してしまいました……)

使い方

・数式タブからPython挿入

数式タブから「Pythonの挿入」を選択すると、セル内に直接コードを記述できます。

・セルに「=PY()」記述

セルに「=PY()」と記述することで、Pythonコードを簡単に開始できます。

・コードエディタ使用

コードエディタを使用して、より複雑なPythonコードを記述することができます。

制限

導入が簡単で、使い始めるまでのハードルが低いPython in Excel ですが、
使用できる機能に制限があります。

・ライブラリ

使用できるライブラリに制限があります。
Python in Excelでは、 Anaconda※1 によって提供されている標準ライブラリのみを使用することができます。
ユーザが、外部ライブラリをインストールすることはできません。

※1 Anaconda…データサイエンスや機械学習に関する作業を効率的に行うためのPythonディストリビューション。

・Webアクセス

外部APIや、Webサイトへのアクセスができません。
インターネット経由でデータを取得するようなプログラムには不向きです。

・戻り値

セルに記述したPythonコードの戻り値は、単純な構造に限られます。
3次元配列やクラスインスタンスなどは使用できませんが、数値・文字列・DataFrame(表形式) などは使用可能です。

サンプル紹介

Python in Excel を使うことで、Excelよりも効率的に操作できる例を2つ紹介します。

・要約統計量取得

※要約統計量…データ分析に必要な「平均値、中央値、四分位範囲」などの統計情報

例 : ある店の2025年5月の売上が、日単位で表にまとめられています。
このデータから、PythonとExcel関数を使って、それぞれ要約統計量を取得してみます。

・Python
Pythonなら、たった1セルに2行のコードを記述するだけで要約統計量が取得できます。

df = xl("B1:B32", headers=True)   #←売上データを取得
df.describe()                     #←要約統計量を取得するdescribe()メソッドを実行

また、データ範囲が変更された場合も修正が容易です。

・Excel
Excelで同様の要約統計量を取得するには、各項目に対応した関数を個別に用意する必要があります。
また、データ範囲が変更された場合すべてのExcel関数を修正する必要があります。

count : =COUNTA(B2:B32)              ←件数
mean  : =AVERAGE(B2:B32)             ←平均値
std   : =STDEV.S(B2:B32)             ←標準偏差
min   : =MIN(B2:B32)                 ←最小値
25%   : =QUARTILE.INC(B2:B32,1)      ←第一四分位
50%   : =MEDIAN(B2:B32)              ←第二四分位
75%   : =QUARTILE.INC(B2:B32, 3)     ←第三四分位
max   : =MAX(B2:B32)                 ←最大値

・折れ線グラフ

前項で使用したデータを使い、「売上と7日移動平均」の折れ線グラフを作成します。
ここでもPythonとExcelの両方で比較します。

・Python

import matplotlib.pyplot as plt

plt.rcParams['font.family'] = 'Meiryo'        # フォント設定
df = xl("B1:B32", headers=True)               # データ取得
df['移動平均'] = df['売上'].rolling(7).mean()  # 移動平均を計算

# グラフ表示用の設定
fig, ax = plt.subplots()                      
ax.plot(df['日付'], df['売上'], label="売上", marker="o")
ax.plot(df['日付'], df['移動平均'], label="7日移動平均", linestyle="--")
ax.set_title("売上と7日移動平均")
ax.legend() 
plt.xticks(rotation=45) 
plt.tight_layout() 

ややコード量は増えますが、「移動平均」の計算もグラフの描画もすべてPython内で完結します。
グラフの装飾も柔軟に設定可能です。

・Excel

Excelのグラフ機能は直感的で操作しやすいですが、
「移動平均」列を手動で追加する必要があり、操作ミスや調整の手間が発生します。
また、装飾や自由なカスタマイズにも限界があります。

課題と今後の展望

Python in Excel を使うことでデータ操作、グラフ生成などが効率的に行えることがわかりました。
一方で、冒頭で述べたように機能に制限があるため、Excel機能の方が適している場面もあると感じます。
今後、使用可能なライブラリの拡充や、複雑なデータ型への対応が進めば、
さらに活用の幅が広がると考えられます。

さいごに

まだリリースされて間もない機能ですが、今後のアップデート次第では、Excelの主要機能の一つとして定着する可能性も十分あると考えています。
興味があれば導入して使用してみることをおすすめします。

ご覧いただきありがとうございました。