Excel 2024以降に搭載された「PY関数(Python in Excel)」は、これまでVBA(マクロ)では実現が難しかった高度なデータ処理や機械学習を、Excel上で直接行えるようにした画期的な機能です。
従来のVBAでは、ループ処理やUI操作などには強みがありましたが、AIや統計解析などの分野では限界がありました。
この記事では、「ExcelのPY関数でできること」「VBAではできないこと」「両者の得意・不得意分野」について、実際の使用例を交えながらわかりやすく解説します。
ExcelのPY関数とは?PythonがExcelに組み込まれた新時代の機能
PY関数(Python in Excel)は、MicrosoftがExcelに公式統合したPython実行環境です。
従来、Pythonを使うには外部アプリやライブラリ(AnacondaやJupyterなど)を経由する必要がありましたが、現在ではExcel内で直接Pythonコードを実行できます。
主な特徴
- セル内に「=PY(“Pythonコード”)」と入力するだけでPythonが実行可能。
- pandasやmatplotlibなど主要なデータ分析ライブラリを標準搭載。
- Excelシート上のデータをPythonで直接読み取り・処理・可視化できる。
- グラフ描画や機械学習モデルの構築も可能。
つまり、これまでVBAでは複雑になりがちだった「データ分析」「AI活用」「統計処理」を、Pythonの力でシンプルにできるのが最大の魅力です。
VBAでは難しかったことが、PY関数で簡単にできる
ここでは、VBAで実現が難しかった処理を、PY関数でどのように解決できるかを具体例で見ていきましょう。
① 大量データの処理速度
VBAで数万行のデータをループ処理すると、動作が非常に遅くなります。
一方、Pythonではpandasを使って高速にデータフレーム処理ができ、Excelの表全体を一瞬で集計できます。
例:売上データの集計
=PY("import pandas as pd
df = pd.DataFrame(Excel.CurrentWorkbook()['Sheet1'])
df.groupby('商品名')['売上'].sum()")
VBAではForループと条件分岐を組み合わせて数十行書く処理が、Pythonならわずか数行で完結します。
② 機械学習・AI分析
VBA単体では機械学習モデルの構築は不可能です。
一方で、PY関数を使えばscikit-learnを利用して予測モデルを作成できます。
例:売上予測モデルの作成
=PY("
from sklearn.linear_model import LinearRegression
import pandas as pd
df = pd.DataFrame(Excel.CurrentWorkbook()['Data'])
X = df[['広告費']]
y = df['売上']
model = LinearRegression().fit(X, y)
prediction = model.predict([[100000]])
prediction[0]
")
このように、Pythonを使えばExcel内で簡易的なAI予測が可能になります。
③ グラフ・データ可視化の柔軟性
VBAでもグラフ作成は可能ですが、デザインの自由度が低く、複雑な可視化には不向きです。
Pythonのmatplotlibやseabornを使えば、ヒートマップ、相関図、回帰線付き散布図など、高度なグラフをExcel上で表示できます。
例:相関ヒートマップ
=PY("
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
df = pd.DataFrame(Excel.CurrentWorkbook()['Data'])
sns.heatmap(df.corr(), annot=True, cmap='coolwarm')
plt.show()
")
分析用レポートの作成も大幅に効率化されます。
④ テキストマイニング・自然言語処理
VBAではテキスト処理は得意ですが、形態素解析や感情分析などの高度な自然言語処理は困難です。
Pythonなら、自然言語処理ライブラリ(NLTK、Janomeなど)を使ってExcel内の文章データを解析できます。
例:レビューの感情分析
=PY("
from textblob import TextBlob
import pandas as pd
df = pd.DataFrame(Excel.CurrentWorkbook()['Sheet1'])
df['sentiment'] = df['レビュー'].apply(lambda x: TextBlob(x).sentiment.polarity)
df
")
VBAでは外部APIを使うしかないような処理も、Pythonならローカルで完結します。
逆にVBAが得意で、PY関数が苦手なこと
PY関数は非常に強力ですが、すべてを置き換えられるわけではありません。
以下のような「操作系の自動化」は、VBAのほうが今でも優位です。
① ユーザー操作の自動化(UI制御)
- シートを開く、閉じる、セルを選択する
- メッセージボックスを表示する
- ファイルを自動で保存・印刷する
これらの操作はVBAが得意であり、Python in Excelの制御対象外です。
② 外部アプリケーションとの連携(OutlookやWordなど)
VBAでは「CreateObject」を使ってOutlookやWordを制御できますが、PY関数ではExcel内部のサンドボックス内で動作するため、外部アプリへのアクセスが制限されています。
③ ボタンやイベント駆動の処理
VBAは「ボタンを押したら動く」「ブックを開いたら実行」といったイベント連動型の処理が得意ですが、PY関数はセル単位でコードを評価する仕組みのため、イベントトリガーを持ちません。
④ セキュリティ制限の違い
PY関数では、Excelの安全性確保のために外部ファイルへのアクセスやネットワーク接続が制限されています。
VBAのように「自由にファイル操作をする」といったことはできません。
VBAとPY関数の比較表
| 項目 | VBA | PY関数(Python in Excel) |
|---|---|---|
| 実行環境 | Excel内部 | Excel内のPythonサンドボックス |
| 得意分野 | 操作自動化、UI連携 | データ分析、機械学習、統計解析 |
| 外部アプリ制御 | 可能(Outlook、Word等) | 不可 |
| 高度な数値計算 | 不得意 | 非常に得意 |
| グラフ作成 | 標準機能に限定 | 高度な可視化可能(matplotlib等) |
| 処理速度 | 遅め(逐次処理) | 高速(ベクトル演算) |
| イベントトリガー | あり | なし |
| 外部ファイル操作 | 可能 | 制限あり |
| コードの可読性 | 長くなりがち | 短く明快 |
| 学習難易度 | 初心者向け | 中級者以上向け |
両者を組み合わせて使うのが最強
実は、VBAとPY関数は「どちらか一方を選ぶ」必要はありません。
それぞれの強みを活かし、ハイブリッド的に活用することで最強のExcel環境を構築できます。
例:VBAで自動化 + PY関数で分析
- VBAでファイルを自動収集 → PY関数で集計・分析 → VBAでレポート出力
このように役割分担することで、両者の弱点を補完し合えます。
例:定型業務をVBA、分析業務をPython
定型処理や繰り返し作業はVBA、
データサイエンスや予測分析はPY関数。
このように「使い分け」を意識するだけで、業務効率が大幅に向上します。
まとめ
PY関数は、ExcelにPythonの力をもたらした革新的な機能です。
VBAでは難しかった高速データ処理やAI分析、グラフ可視化などをシンプルに実現できます。
一方で、ユーザー操作や外部アプリ連携などの制御は依然としてVBAの得意分野です。
したがって、「VBA=操作の自動化」「PY関数=データ分析・AI」と役割を明確に分けて使うのが理想的です。
Excelの世界は今、VBA時代からPython時代へと進化しています。
あなたもぜひ、新しいExcel活用法として「PY関数」を試してみてください。
