Python in Excel ― Excel上でPythonを使ったデータ分析
📘 はじめに
Python in Excelは、Microsoft Excelのセル内でPythonコードを記述し、Pythonによるデータ処理・統計解析・可視化をExcel上で行うための機能です。
従来、Excelで高度なデータ分析を行う場合は、Excel関数、ピボットテーブル、Power Query、VBAなどを組み合わせる必要がありました。Python in Excelでは、これらに加えてPythonのデータ分析ライブラリを利用できます。
特に次のような処理に向いています。
- 大量データの集計・加工
- 複雑な統計解析
- 回帰分析や時系列分析
- Excel関数では記述しにくい計算
- pandasを利用した表形式データ処理
- Matplotlibなどを利用したグラフ作成
- NumPyを利用した数値計算
PythonはPC上で直接実行されるのではなく、Microsoft Cloud上のセキュリティで保護された環境で実行されます。そのため、PCへのPythonのインストールは不要です。(マイクロソフトサポート)
Python in Excelは「ExcelからローカルのPythonを呼び出す機能」ではありません。Excelに統合された専用のクラウドPython実行環境を利用する仕組みです。
🐍 Python in Excelとは
Python in Excelでは、ExcelセルをPythonセルとして使用できます。
通常のExcelでは、
=SUM(A1:A10)
のようにExcel関数を記述しますが、Python in ExcelではPythonコードをセル内に記述できます。
Pythonモードは、リボンの
[数式]→[Pythonの挿入]
から開始できます。
また、
=PY
と入力して、オートコンプリートからPY関数を選択する方法もあります。(マイクロソフトサポート)
PythonコードからExcelのデータを取得するときには、xl()関数を使用します。
例えばExcelのA1:B10をPythonへ読み込む場合、概念的には次のようになります。
df = xl("A1:B10", headers=True)
取得したデータはpandasのDataFrameとして処理できます。
Excelをデータ入力・確認・帳票のインターフェースとして使い、複雑な分析部分だけPythonに任せる使い方が非常に相性の良い構成です。
☁️ Pythonはどこで実行されるのか
Python in Excelで特に重要なのが実行環境です。
Pythonコードは使用しているWindows PC上ではなく、
Microsoft Cloud上の隔離されたコンテナー
で実行されます。(マイクロソフトサポート)
そのため、PCに次のようなものをインストールする必要はありません。
- Python
- Anaconda
- pandas
- NumPy
- Matplotlib
- Jupyter Notebook
また、PCにPythonがインストールされていても、そのPython環境とは別物です。
例えばローカル環境で、
pip install xxxx
として追加したライブラリや、ローカルPythonの設定はPython in Excelには反映されません。(マイクロソフトサポート)
Python in Excelはクラウド上で計算するため、インターネット接続が必要です。完全なオフライン環境では使用できません。
📊 ExcelデータをPythonで扱う
Python in Excelでは、Python専用のxl()関数を使ってExcel側のデータをPythonへ渡します。
例えば、
df = xl("A1:D100", headers=True)
のようにセル範囲を取得できます。
セル範囲だけでなく、Excelテーブルなどの参照も利用できます。
Python側では取得したデータをpandasなどで処理できます。
例えば売上データを商品別に集計する場合、
df = xl("A1:D100", headers=True)
df.groupby("商品")["売上"].sum()
のような処理ができます。
Excel関数だけで同じ処理を実現する場合と比較すると、複雑なデータ加工ほどPythonの利点が大きくなります。
📦 利用できる主なPythonライブラリ
Python in Excelでは、Anacondaが提供するPython環境を利用します。
代表的なライブラリとして次があります。(マイクロソフトサポート)
| ライブラリ | 主な用途 |
|---|---|
| pandas | 表形式データの加工・集計 |
| NumPy | 数値計算 |
| Matplotlib | グラフ・可視化 |
| seaborn | 統計グラフ |
| statsmodels | 統計解析 |
| SciPy | 科学技術計算 |
| scikit-learn | 機械学習 |
| Astropy | 天文学・天体物理学 |
特にExcelとの組み合わせで重要なのは、
pandas + NumPy + Matplotlib
です。
pandas
Excelの表をDataFrameとして扱い、
- フィルタ
- 並べ替え
- 集計
- グループ化
- 欠損値処理
- データ変換
などを行えます。
NumPy
大量の数値データに対する計算や行列演算などに向いています。
Excel関数では式が非常に複雑になる処理でも、NumPyを利用すると簡潔に記述できる場合があります。
Matplotlib
Pythonで広く利用されているグラフ描画ライブラリです。
Excel標準グラフでは作りにくい可視化を作成できます。
📈 Pythonによるグラフ作成
Python in ExcelではMatplotlibなどを利用してグラフを作成できます。
例えば、
import matplotlib.pyplot as plt
df = xl("A1:B100", headers=True)
plt.plot(df["日付"], df["売上"])
plt.title("売上推移")
plt.show()
といった分析ができます。
Excel標準グラフとPythonグラフには、それぞれ得意分野があります。
| Excelグラフ | Pythonグラフ |
|---|---|
| 操作が簡単 | 高度なカスタマイズが可能 |
| GUIで編集できる | コードで再現できる |
| 一般的な業務グラフに強い | 統計・科学技術系グラフに強い |
| 他の利用者が修正しやすい | 複雑な可視化に強い |
棒グラフ・折れ線グラフなど一般的な業務資料はExcel標準グラフ、統計解析や特殊な可視化はPython、と使い分けると管理しやすくなります。
🧮 Excel関数との使い分け
Pythonが使えるからといって、すべての計算をPythonへ置き換える必要はありません。
例えば、
=SUM(A1:A100)
程度の処理をPythonで実装するメリットはほとんどありません。
Excel関数が向いている処理
- SUM
- AVERAGE
- IF
- XLOOKUP
- FILTER
- UNIQUE
- SUMIFS
- COUNTIFS
などで簡潔に表現できる処理です。
Pythonが向いている処理
- 複雑なデータ変換
- 多段階の集計
- 統計解析
- 回帰分析
- 機械学習
- 大量データの処理
- 特殊なグラフ
- 行列計算
- 科学技術計算
「Excel関数で簡潔に書けるものはExcel関数、式が複雑化する分析処理はPython」という分担が基本になります。
🔄 Power Queryとの使い分け
Power QueryとPythonは用途が重なる部分がありますが、基本的な役割は異なります。
Power Query
主に、
データ取得 → 整形 → Excelへ読み込み
を担当します。
例えば、
- CSVの取り込み
- 複数ファイルの結合
- 列の追加・削除
- データ型変換
- 外部データの更新
などです。
Python
主に、
データ → 分析 → 結果
を担当します。
例えば、
- 統計解析
- 回帰分析
- 数値計算
- 高度な集計
- 可視化
- 機械学習
などです。
そのため、
外部データ
↓
Power Query
↓
Excelテーブル
↓
Python in Excel
↓
分析結果
↓
Excelグラフ・帳票
という構成が使いやすいパターンです。
Python in ExcelからPower Query接続経由のデータを読み取ることもできます。(マイクロソフトサポート)
⚙️ Office Scriptsとの使い分け
Python in ExcelとOffice Scriptsは目的がかなり異なります。
| Python in Excel | Office Scripts |
|---|---|
| データ分析 | Excel操作の自動化 |
| 統計解析 | セルへの書き込み |
| 数値計算 | シート操作 |
| pandasによる集計 | テーブル操作 |
| グラフ生成 | 書式設定 |
| Python | TypeScript |
Python in Excelは、
「データを計算・分析する」
機能です。
Office Scriptsは、
「Excelそのものを操作する」
機能です。
例えば、
「売上データから回帰分析する」
ならPythonが適しています。
一方、
「毎月新しいシートを作成して、表をコピーし、書式を設定する」
ならOffice Scriptsが適しています。
🚫 Python in Excelでできないこと
Python in Excelは通常のPython環境とは大きく異なります。
特に重要なのが、ローカルPCへ自由にアクセスできないことです。
Microsoftのセキュリティ設計上、PythonコードからローカルPCのファイルやネットワークへ直接アクセスすることはできません。(マイクロソフトサポート)
そのため、通常のPythonで行うような、
open("C:/data/test.csv")
といったローカルファイルアクセスを前提とした使い方はできません。
同様に、Pythonライブラリから自由に外部Webサービスへアクセスすることもできません。
Excelオブジェクトを自由に操作することもできない
PythonコードはExcelブック内の、
- 数式
- グラフ
- PivotTable
- マクロ
- VBAコード
などを自由に操作できるわけではありません。(マイクロソフトサポート)
PythonからExcelへ結果を返す基本的な入口は=PY()です。
Python in ExcelをVBAの代替となるExcel自動操作言語として考えると用途を誤ります。Python in Excelの中心用途はExcelデータの分析・計算です。
🔐 セキュリティ
PythonコードはMicrosoft Cloud上のセキュリティで保護されたコンテナーで実行されます。
Python環境からユーザーのPCやアカウントへ自由にアクセスできるわけではありません。
Microsoftによれば、この環境はMicrosoft 365のコンプライアンス境界内で動作し、GDPRやEU Data Boundaryにも対応しています。(マイクロソフトサポート)
この制限によって、
Python
↓
ローカルファイル
や、
Python
↓
インターネット
といった自由なアクセスはできません。
一方、
Excel
↓
xl()
↓
Python
↓
分析結果
↓
Excel
という管理されたデータフローで処理できます。
🖥️ 対応環境
2026年9月時点では、Python in ExcelはMicrosoft 365の対象ライセンスで提供されています。
Enterprise / Businessユーザーでは、Windowsについて次の更新チャネルで利用できます。
- Current Channel:Version 2408以降
- Monthly Enterprise Channel:Version 2408以降
- Semi-Annual Enterprise Channel:Version 2502以降
Excel for the webにも対応しています。
MacについてもEnterprise / Businessユーザー向けに提供されています。
一方、次の環境ではPythonを実行できません。
- Excel for iPad
- Excel for iPhone
- Excel for Android
対応していない環境でもPythonを含むブック自体は表示できますが、Pythonセルを再計算するとエラーになります。(マイクロソフトサポート)
買い切り版Officeではなく、基本的に対象となるMicrosoft 365ライセンスが必要です。また、デバイスベースライセンスや共有コンピューターのライセンス認証ではサポートされません。
💻 コードエディター
Pythonコードが長くなる場合、セル内だけでは編集しにくくなります。
Python in Excelにはコードエディターのタスクペインが用意されています。
コードエディターでは、
- ブック内のPythonコード一覧
- シート・セル位置の確認
- IntelliSense
- シンタックスカラーリング
などを利用できます。(マイクロソフトサポート)
短い処理ならセル内、長い処理ならコードエディターという使い分けができます。
🤖 Copilotとの組み合わせ
Python in ExcelはCopilotとの組み合わせも想定されています。
Pythonに詳しくない利用者でも、
このデータについて商品別の売上と利益率の関係を分析して
のような分析要求からPythonを利用した分析につなげられます。MicrosoftもCopilot in Excel with Pythonとしてこの組み合わせを提供しています。(マイクロソフトサポート)
これはPython in Excelの大きな利点です。
Pythonコードそのものを覚えることより、
「何を分析したいのか」を明確にする能力
の重要性が高くなります。
🧭 Excel関連機能の使い分け
Excel業務では、Pythonだけですべてを処理するのではなく、それぞれの機能を役割分担させる方が適しています。
| やりたいこと | 適した機能 |
|---|---|
| 単純なセル計算 | Excel関数 |
| 条件集計・検索 | Excel関数 |
| 外部データ取得 | Power Query |
| データ整形 | Power Query |
| 統計解析 | Python in Excel |
| 高度な数値計算 | Python in Excel |
| 特殊な可視化 | Python in Excel |
| シート・セル操作の自動化 | Office Scripts |
| Microsoft 365を含む業務フロー自動化 | Power Automate |
| デスクトップExcelの細かな自動操作 | VBA |
したがって、Python in Excelは、
VBAの新しい代替品というより、Excelに追加された「分析エンジン」
と考えると位置付けが分かりやすくなります。
新規にExcel業務を設計する場合は、Excel関数 → Power Query → Python in Excel → Office Scripts / Power Automateを用途ごとに組み合わせ、VBAはそれらで対応できないデスクトップ固有処理に限定すると保守しやすくなります。
📝 まとめ
Python in Excelは、ExcelにPythonのデータ分析能力を組み込む機能です。
重要なポイントは次のとおりです。
- Excelセル内でPythonを使用できる
- ローカルへのPythonインストールは不要
- Microsoft Cloud上でPythonが実行される
- Excelデータは
xl()でPythonへ渡せる - pandas、NumPy、Matplotlibなどを利用できる
- 統計解析や複雑なデータ処理に強い
- ローカルファイルやネットワークへ自由にはアクセスできない
- VBAやOffice ScriptsのようなExcel操作自動化機能ではない
- Power Queryとの組み合わせが有効
- Copilotを利用すればPythonコード生成も支援できる
Python in Excelの位置付けを簡潔に整理すると、
Excel関数 :計算
Power Query :取得・整形
Python in Excel :分析
Office Scripts :Excel操作
Power Automate :業務フロー
VBA :デスクトップExcelの高度な自動化
となります。
Python in Excelによって、これまでExcelだけでは実装が難しかった高度な分析を、Excelという使い慣れたインターフェースを維持したまま利用できるようになります。