【2024年】Python in Excel搭載|いつ&何ができるのか?&今後の展望

お知らせPython in Excelは日本時間の2023年08月23日(水)パブリックプレビュー版として公開されました

お知らせ記事には広告が含まれておりますがExcelのスキルUPに繋がる様コンテンツ自体は手を抜かずに作成しております

ExcelにPythonが搭載されました

2023年08月22日(米国日時)MicrosoftはPython in Excel」を発表しました。

ずっと噂レベルで「ExcelにPythonが搭載される」と言われてきましたが遂にリリースされました。

「Python in Excel」は、「Microsoft Excel」内で「Python」を利用できるようにする機能です。

ただしパブリックプレビューという記載があります。広く一般の方が使えるのはまだ先になりそうです。

今まではExcelでの業務効率化というとVBAでした。しかしVBAとは違った軸でExcelは活動の幅を広げた様です。

VBAと同じ対応は出来ませんがVBAが出来ない、弱いところをPythonで開拓できるようになります。

Youtubeでもリリスノートと同じ動画を見る事ができます。

EnjoyExcel
EnjoyExcel

まだ一部の権限の人しか使えないです。気持ちとしては「早く使いたい」ですよね。

Pythonも使った事があるのでこの言語の良さを知っています。コラボがすごく楽しみです。

何ができるのか気になりますよね。そこで英語版のリリースをもとにできることを解説します。

加えてこのような観点に注目して解説、考察をしていきます。皆様気になりそうな質問を用意しました。

  • いつから多くのユーザーに解禁されるのか
  • Pythonを勉強した方がよいのか
  • VBAは無くなってしまうのか

後半では「Pythonを勉強した方が良いのか」、「VBAは無くなってしまうのか」について答えを用意しました。

ExcelユーザーやVBAを使っている方に向けてここから数年の間に損をしない立ち回りを紹介します。

キーワードは「VBAを勉強する」の一択です。以降で解説していきます。

関連記事

2023年11月より「Microsoft 365 Copilot」が企業向けのライセンス内でリリースされます。

これにはExcelも含まれています。AIが「Python in Excel」を操作する事になります。

一例を紹介します。ユーザーは「データを見易いグラフにして」という命令だけでグラフが生成されます。

この機能が広がればExcelでPythonを使うにあたってPythonを勉強する必要がなくなるかもしれません。

重要Copilot in Excelとは|いつ&できる事&価格|365で使用可能

Pythonが気になっている方向けにお知らせ

情報検討は必要ですが「まずはPythonを使って何かを作ってみたい」と思っている方。

正解です。どんなプログラミング言語でもまずは自分でやってみないと何も進みません。

行動先行型」の方に向けて情報を提供します。早速無料のカウンセリングを受けてみてください。

\早く行動に移す人が結局一番強いです/

VBAを勉強しましょう

本格的にPythonがExcelに搭載される前にVBAを勉強する事をおすすめします。

Pythonからプログラミングを始めるよりはるかに学びやすく実務でも効果を出す事ができます。

リンク先の記事には質問にYes,Noで回答すると最適なコンテンツが選択できる画像を用意しています。

作業時間は1分かかりません。最適な勉強方法を見つけてVBAを習得してください。

スクレイピングにも影響があるかもしれない

VBA中、上級者様の中ではWebスクレイピングにも影響を与えるのではないかと予想される方も居ました。

VBA×Seleniumbasicのトレンドに違う軸が加わるかもしれません。

VBA×SeleniumbasicVBAを使ってWebからデータを取得|Webスクレイピングとは?できる事を教えて

PythonでWebスクレイピングはできます

ご注意ください

もともとPythonではExcelを介さなくてもPython×Seleniumとの連携でスクレイピングが可能です。

そういった環境の中で「Python in Excelでスクレイピングができない」と書いている記事もある様です。

調べ切ってないので正確には分かりません。しかしPythonでWebスクレイピングができないわけではないです。

本当にPython in ExcelでスクレイピングができなかったとしてもPythonには別の方法があります。

PythonでWebスクレイピングをご検討されている方はそのままPythonの勉強を続けてください。

Pythonとは

現役のエンジニアさんじゃなくても1度ぐらいは聞いたことがあるかもしれないキーワードです。

Pythonについてはこちらを参照ください。

Python(パイソン)はインタープリタ型の高水準汎用プログラミング言語である。

wikipedia:Python

これでは分かりにくいですよね。私ExcelのブログをやっておりますのでExcelを使って例を挙げてみます。

Pythonの一部の機能を使えばExcelVBAで出来るようなこと(マクロ)ができます。

作業対象のワークブックを起動しなくてもコードを実行できるなどVBAで出来ない事もできます。

他にも複数のセルを指定して値を代入、データの削除やシートの名前を変える、PDFも扱う事ができます。

Python×Excel

電子書籍(Kindleストア)はこちらです。

続いて言語全体のメリットや環境としては次のようなものがあります。

  • 他の言語と比べ文法が平易で認識、理解しやすい
  • 世界的に見て高いシェアを誇っている
  • 機械学習による分析や解析、やAI(人工知能)といった最先端分野で使用されている

歴史としても比較的若い言語で最近のトレンドです。国家資格の基本情報技術者試験の中でも採用されています。

公式リリースを読み解く

では今回のリリースの話に戻ります。未だ概要レベルですが何点か認識する事ができました。

  1. 開発環境を用意しなくて良い
  2. 関数として使う
  3. ライブラリも搭載されている

参考ですが冒頭と同じリンク先にはMicrosoftが用意した動画があります。視覚で使用感を認識する事ができます。

以降は読み取れた点について1つずつ考察していきます。

ついにPythonとExcelのコラボが実現しますね
ついにPythonとExcelのコラボが実現しますね

1_開発環境を用意しなくてよい

Excel含めMicrosoft関連のAppにはVBAが搭載されており環境構築はほぼ不要です。

しかし他の言語でプログラミングに取り組む為には環境構築がつきものです。開発環境はどの言語も必須です。

一見「環境作るだけでしょ」、「何か問題でも?」と思ってしまうのですがこれが本当に大変です。

プログラミングを勉強する方の多くは言語を書くところまで到達せず環境構築が分からず勉強を終えます。

知識がない初期に対象言語全体の事を考えた難しいタスクをこなす事になるので非常に大変です。

これが不要となるとリリース後はExcel内でPythonを使うユーザーは増えるのではないかと予測されます。

実例:Excel×SQL

私の記事のなかでVBAの中でSQL文を書くという記事を用意しています。

5本の記事があるのですがほとんど環境構築です。非常に時間と労力を要するとともに勉強が必要です。

2_関数として使う

リリースノートの中で紹介されているのはワークシート上で関数の様に使う方法です。

=PY」 の書き始めで関数の様に使います。(PY関数の詳細はこちら

記入場所はセルです。セルにPythonを直接入力することになります。

その後Microsoft Cloudで計算が実行されます。プロットや視覚化を含む結果がシートに返される様です。

Pythonを関数として使うことができます

もう少し具体的に申し上げますと単発のコードをワークシートに仕込んでいくみたいな使い方でした。

こちらもMicrosoftのリリースノート内の動画で確認する事が可能です。

加えてPY関数で生成したデータはExcelの既存機能とも互換性があります。

関数やピボットテーブル、条件付き書式などの機能と一緒に使う事ができます。

個人的には関数の上位互換のようなイメージを持ちました。

加えてワークシート内では今までの関数とも併用できるようです。できる事が広がりそうな印象を持ちました。

より広いユーザーを意識している

しっかりコードを書いてプログラミングとして作業を処理するという建付けだと使用者が限られます。

関数のような使い方を残し広いユーザーへの理解を意識しつつスキルの高い人も満足できるような内容です。

ワークシート内にコードを書く事もある

一方で見た目はExcelの関数の様に使われていますが少し違う使い方もある様です。

「ワークシート内にコードを書く」という感覚です。長めのコードをセルに埋め込んで使っていました。

しかしマクロの様にプロシージャを用意してコードを実行するという仕様までは確認できませんでした。

プログラムを用意し自動でファイルを操作してセルに値を記述するという類のものではなかったです。

直ぐには難しいと予想されますがいつかはVBEにPythonのコードを書く日が来るかもしれませんね。

Pythonのコードを書くならEditorは欲しい

PY関数の様にある程度短いコードを書くだけならワークシートに直書きでも使えそうです。

しかし数行のコードを書くとなると話は別です。使いにくくなることでしょう。

そうなる事も想定してMicrosoftは動いている様です。

2023年09月に「Excel Labs」から「Python Editor」という新しいエディタが発表されました。

このエディタは、Excel内でPythonの式(コード)を書いたり編集したりすることができます。

現在Excel Labsにアクセスできるユーザーは、Python Editorを使用することができます。

Q
Excel Labsとは何ですか?
A

Microsoft Garageのプロジェクトの1つでExcelの新機能を試験的に提供するアドインです。

Excel内でChatGPTなどのAIを使った自動化ツールを利用することができます。

Q
Microsoft Garageとは何ですか?
A

Microsoft GarageはMicrosoftのプログラムです。ポイントは5つです。

  • 従業員が自分たちの関心事に基づいたプロジェクトに取り組むことを奨励する。
  • 従業員が自由にアイデアを出し、それを形にして商品化することを目的とする。
  • 一般ユーザーがMicrosoftの開発中のアプリを試用できるようにすることもある。
  • 社員、顧客、エコシステムにプログラムや体験を提供し、イノベーションの文化を醸成することを目的とする。
  • 2009年に始まり、世界中の7つの施設に展開されている。

ちなみにオンラインExcelでマクロの様な事ができるOfficeScriptは小さいエディタしか無く私には使いにくいです。

やはりワークシートでコードを書くのは限界があるので同時にエディタも開発が進むことを願っています。

Python in Excelが一般リリースされる際に「Python Editor」も一緒に搭載されると良いですね。

3_ライブラリも搭載されている

現状のPython使用環境でも広いシェアを誇るAnaconda」が搭載されるようです。

簡単に申し上げますとAnacondaとはライブラリです。Microsoftのリファレンスのリンクを載せておきます。

ライブラリとは「必要な時に必要なものを用意する為の便利機能」です。効率化にもつながります。

ライブラリ: library)は、汎用性の高い複数のプログラムを再利用可能な形でひとまとまりにしたものである。

Wikipedia:ライブラリ
anacondaがついてくれれば心強いです

もともとPythonという言語は単体でパソコンにインストールする時は多くの機能を持っていません。

PythonからExcelを動かす時にもOpenpyxl等のライブラリを用いて必要な機能を装備する必要があります。

多くのプログラミング言語はライブラリと連携して色々な事が出来るように作られています。

openpyxlの様な機能を揃えたライブラリであるAnacondaがExcelに搭載されるのはGoodNewsです。

使用可能なライブラリを調べてみました。約300ぐらいあるのでアコーディオンに用意しています。

Automat
Babel
Bottleneck
Flask
HeapDict
Jinja2
Markdown
MarkupSafe
Pillow
Protego
PyDispatcher
PyHamcrest
PyQt5-sip
PySocks
PyWavelets
PyYAML
Pygments
QDarkStyle
QtAwesome
QtPy
Rtree
SQLAlchemy
Scrapy
SecretStorage
Send2Trash
Sphinx
Twisted
Unidecode
Werkzeug
alabaster
anyio
appdirs
argon2-cffi
argon2-cffi-bindings
arrow
astroid
astropy
asttokens
atomicwrites
attrs
autopep8
backcall
bcrypt
beautifulsoup4
beniget
binaryornot
black
bleach
bokeh
brotlipy
certifi
cffi
chardet
charset-normalizer
click
cloudpickle
colorama
colorcet
comm
constantly
contourpy
cookiecutter
cryptography
cssselect
cycler
cytoolz
dask
datashader
datashape
debugpy
decorator
defusedxml
diff-match-patch
dill
distributed
docstring-to-markdown
docutils
entrypoints
et-xmlfile
excel
executing
fastjsonschema
filelock
flake8
flit-core
fonttools
fsspec
future
gast
gensim
gmpy2
greenlet
h5py
holoviews
huggingface-hub
hvplot
hyperlink
idna
imagecodecs
imageio
imagesize
imbalanced-learn
importlib-metadata
importlib-resources
incremental
inflection
iniconfig
intake
intervaltree
ipykernel
ipython
ipython-genutils
ipywidgets
isort
itemadapter
itemloaders
itsdangerous
jedi
jeepney
jellyfish
jinja2-time
jmespath
joblib
json5
jsonschema
jupyter
jupyter-client
jupyter-console
jupyter-core
jupyter-server
jupyterlab
jupyterlab-pygments
jupyterlab-server
jupyterlab-widgets
keyring
kiwisolver
lazy-object-proxy
llvmlite
locket
lxml
lz4
matplotlib
matplotlib-inline
mccabe
mistune
mock
mpmath
msgpack
multipledispatch
munkres
mypy-extensions
nbclassic
nbclient
nbconvert
nbformat
nest-asyncio
networkx
nltk
notebook
notebook-shim
numba
numexpr
numpy
numpydoc
officepydep
openpyxl
packaging
pandas
pandocfilters
panel
param
parsel
parso
partd
pathspec
patsy
pep8
pexpect
pickleshare
pip
platformdirs
plotly
pluggy
ply
pooch
poyo
prometheus-client
prompt-toolkit
psutil
ptyprocess
pure-eval
py
pyOpenSSL
pyasn1
pyasn1-modules
pycodestyle
pycparser
pyct
pycurl
pydocstyle
pyerfa
pyflakes
pylint
pylint-venv
pyls-spyder
pyodbc
pyparsing
pyrsistent
pytest
pytest-json-report
pytest-metadata
pytest-officepyresultreport
python-dateutil
python-lsp-black
python-lsp-jsonrpc
python-lsp-server
python-slugify
python-snappy
pytoolconfig
pytz
pyviz-comms
pyxdg
pyzmq
qstylizer
qtconsole
queuelib
regex
requests
requests-file
rope
scikit-image
scikit-learn
scipy
seaborn
service-identity
setuptools
sip
six
smart-open
sniffio
snowballstemmer
sortedcontainers
soupsieve
sphinxcontrib-applehelp
sphinxcontrib-devhelp
sphinxcontrib-htmlhelp
sphinxcontrib-jsmath
sphinxcontrib-qthelp
sphinxcontrib-serializinghtml
spyder
spyder-kernels
stack-data
statsmodels
sympy
tables
tabulate
tblib
tenacity
terminado
text-unidecode
textdistance
threadpoolctl
three-merge
tifffile
tinycss2
tldextract
tokenizers
toml
tomli
tomlkit
toolz
torch
tornado
tqdm
traitlets
transformers
typing-extensions
ujson
urllib3
w3lib
watchdog
wcwidth
webencodings
websocket-client
whatthepatch
wheel
widgetsnbextension
wrapt
wurlitzer
xarray
yapf
zict
zipp
zope.interface

例えばPandasを使ってデータ解析やグラフを作るんだろうな等一部は想像できます。

筆者も使った事がないライブラリが沢山あるので全部は理解できていません。

しかしアクセス可能という事は使えるはずです。全部使えたらもはやExcelの域を超えますね。

機械学習関連のライブラリを用いたデータ解析の一例

ライブラリから機械学習系のパッケージを用いてExcelデータを学習させます。

学習するデータは部品Aの寸法データとしましょう。ここでは出来るだけ複数のデータを学習させましょう。

まずは部品Aの検査対象の寸法と周辺データ、OK/NG(合否のしきい値は与えない)判定を学習させます。

続いて学習後のデータに未学習の部品Aの検査対象の寸法データ+周辺データを1つ照合させてみます。

すると学習済みデータが新たに照合した部品Aのデータに対し瞬時にOK/NGの判定をします。

OK/NGのしきい値を与えなくても学習データのデータパターンからOK/NG判定をしてくれます。

大雑把な説明でしたがこんな事がExcel内で出来るようになります。

エディション(版)管理が楽になる

ライブラリにはエディション(版)もあるのでタイミングによっては版が古いなんていう事もあります。

ExcelとしてAnacondaを持ってくれれば版管理も制御できるので色々な面で楽になることでしょう。

ExcelVBAでもライブラリを使っている

VBAの中でもライブラリは使用されています。用途としては「参照設定」です。

スキル中級者程になると参照設定を開いてレ点を付けた事がありますね。

これはライブラリを選択して必要な機能を呼んでくるという作業です。

具体的には「FileSystemObject」や「ActiveX Data Objects」などです。

参考_BIツールのような使い方も出来る

tableauなどに代表されるBIツールのような使い方も出来るみたいです。

リリースノートの中にある動画を見ると「PY関数」からグラフィカルなリスト、グラフを生成しています。

リリース内の記事を見るとライブラリからseaborn等のパッケージをインストールしてグラフを用意しています。

しっかりコードが書いてありますがパラメータを与えているだけでそんなに難しくはなさそうです。

tableauのような使い方もできる

BIツールは導入、実践するにあたって有料であったり導入時にトレーニングが必要です。

「Python in Excel」は無料です。トレーニングは必要かもしれませんが無料である事のメリットは大きいです。

集計するのに複雑な事をしなくてもコードを書くだけで取得したデータをリスト化出来るのは嬉しいです。

いつから多くのユーザーに解禁されるのか

現在「Python in Excel」はMicrosoft 365 Insider Program内での運用となっています。

Q
「Python in Excel」はいつから使えるのか?
A

現在はMicrosoft 365 Insider Program内で使用可能です。

一般ユーザー向けに使える様になる時期は未定です。

「一般への解禁は?いつ?」と気になる方もいる様です。しかし未だ正式なリリースはありません

Microsoft 365 Insider Program

先行で新しい機能を使う事が出来るプログラムです。

Microsoft365のライセンス次第でプログラムへの参加が出来ます。

画像はInsiderProgramの記事です。黄色背景の辺りの文字を読むと参加できるライセンスが分かります。

Microsoft 365 Insider Program

お知らせMicrosoft365内のチャットでInsiderProgramが使用できるライセンスを確認しました。

チャットの回答が上手く返ってこなくて大変です。

使用される方は時間に余裕を持って実施ください。

最終的には画像のような回答をいただきました。

個人であれば上の2つのどちらかになります。

MicrosoftさんとChatしました

参加OK/NGを書き出すと以下の様になります。リスト後の注意点と合わせてご覧ください。

参加OK
参加NG
  • Microsoft 365 Family
  • Microsoft 365 Personal
  • Microsoft 365 Business Basic
  • Microsoft 365 Business Standard
  • Microsoft 365 Business Premium
  • Microsoft 365 Apps for business
  • 「*2019」など年数が入っている
  • 「LTSC」という文字がある

注意点Business版は企業様の内部で別にライセンスの付与をされている事が多いです。

具体的に言うと「使用できない」可能性もありますので企業内の管理者様に確認下さい。

最終的には各自で使用可否のご確認をお願い致します。

ここで使用した人たちの意見などが反映されて一般ユーザーに提供されることになります。

「いつから使えるの?」と気になる方も多いのですが普及にはまだ時間がかかります。

早速Pythonの勉強を始めるべきなのか

結論としては「No」です。先程申し上げた通り一般ユーザーへの普及には時間がかかります。

ではリリースされるまではどうするべきなのでしょうか。回答は引き続き「No」です。

リリースされてから勉強するぐらいでちょうど良いです。

すぐにPythonを勉強しなくても良い理由

結局は既存の機能であるピボットテーブルやパワークエリと同じ様な事になると推測する為です。

もう少し具体的に言うと「使う人しか使わない」機能になるという事です。

リリースノートにある様にPythonを関数のように使う事で一般ユーザーに馴染みやすい環境は広がります。

しかしここでも勉強が必要です。勉強してまで使いこなしていく人は増えますが激増はしません。

はやる気持ちもありますがリリースされてから勉強するぐらいで十分間に合います。

加えて勉強した事に対するアウトプットが無いと勉強した事は確実に忘れます。

現状ではPythonだけ勉強してもアウトプットの環境が無いのでモチベーションが続かないです。

Pythonを勉強するとしたらどんな事を勉強するべきか

すぐには勉強する必要はないですが一般ユーザーが使える様になった時に何から取り組んだら良いかは明確です。

VBAではできない所、VBAでは弱いところを攻めるべきでしょう。

ライブラリのところで取り上げたPandasの例を再度取り上げてみましょう。

データ解析やグラフ化についてはVBAよりPythonの方が優れています。

VBAでは既存のExcelにあるアウトプットしか用意できません。

Pythonを用いた方がよりグラフィカルで多様性のあるデータを用意する事ができます。

\Excelユーザーとの差別化をはかる/

Pythonが気になる方

そうは言ってもPythonが気になる・・・。と考える方も居るでしょう。

仕事のアウトプットがMicrosoft関連のAppではない方は「Python in Excel」 を待つ必要はないですよね。

みんながやってない時こそ勉強したいと思う方も居ます。そんな皆様の為にPythonを学べる環境を提供します。

比較できる様に何点か用意しました。3社とも受講前に無料カウンセリングがあるのでまずは動いてみましょう。

質問できる環境はマスト

学習中は「しっかり質問が出来る環境なのか」を確かめて納得してから学習される事をおすすめします。

3社とも質問できる環境は整っています。いくつか無料カウンセリングを受講して比較してみてください。

最終的にカウンセリングの内容で納得できたら学習を始めましょう。

VBA含めプログラミングの独学は非常に挫折率が高いです。慎重にご検討ください。

勉強するならばVBA一択

ではここから数年の間Excelユーザーは何を勉強したら良いのか?私の答えはExcelVBAです。

アウトプットがMicrosoft関連のAppで用意されたデータである人たちはVBAを勉強する方がメリットがあります。

VBAは「古い、遅い、分かりにくい」と言われますがこれは理解出来なかった人の意見です。

VBAの他にもCやJavaは未だに第一線で活躍しています。様々な仕事を改善し効率を上げています。

遅いのはコードが悪いし(配列などで改善できる)分からないのはただの「勉強不足」です。

参考記事マクロは何から勉強するのか|学習をサポートするためのロードマップを作成

PythonとVBAは類似点がある

VBAを勉強しておけばPythonの勉強に楽に移ることができます。

参考でPythonとExcelのコードを用意しました。ワークシート関数が分かる方でも理解できるコードです。

どちらも変数pに100を代入している前提です。

この変数pは100ですか?と聞いてTrueの時は「変数pは100です」と表示される様にしています。

左がPythonで右がExelVBAのコードです。各言語でIf文を用意しました。

モバイル(携帯)などで見られている方は上がPythonで下がExcelVBAです。

if p == 100:
  print("変数pは100です")
If p = 100 Then
    Debug.Print "変数pは100です"
End If

非常に似ていますね。加えて見た目だけではなく考え方でも互換性があります。(ここでは紹介しません)

VBAを勉強しておけば既存の仕事を手早く片付けることができるうえで素早くPythonの学習を始められます

VBAを勉強してから時機を見てPythonに乗り換えるがベストプラクティス

VBAを勉強するなら今です

ExcelにPythonが搭載されることが分かった以上今は「VBAを勉強する」一択しかないです。

スクール、動画、書籍などの複数のコンテンツの中からあなたに合った勉強方法を選んでください。

オンライン&マンツーマンで直に教えてもらいたい方はこちらをご覧ください。(顔出し不要です)

VBAは無くなるのか

PythonはExcelVBAの代替言語になるのでは?という人も居ます。

「廃止」なんていうショッキングな記事もありますね。果たしてVBAは無くなるのでしょうか?

結論から申し上げますとVBAは「無くならない」と考えます。VBA経験者だからこそ高角度で言えます。

理由としては現行VBAがカバーしている範囲を別の言語に置き換えるには相当大変だからです。

VBAはMicrosoft関連のAppで広く普及されています。Excel、Word、PowerPoint、Access等です。

これが全てPythonに置き換わるかと言われると総合的に考えて「置き換わります」とは到底思えません。

各Appには対象のオブジェクトが数多く揃っています。

もちろんオブジェクトにはプロパティやメソッドが紐付いています。各App間の相互関係もあります。

複雑なうえものすごい量の情報なのでこれらを別の言語でと考えると相当大きなミッション、金額になります。

いつかは別の言語が生まれてくるのですがここ数年でPythonに置き換わる事は無いです。

まとめ

今回は「Python in Excel」について考察を含めて解説していきました。

あと数年のうちには多くのユーザーがExcelでPythonを使う事になりますね。

加えてここ数年どうやって勉強していけば良いのかも提示しました。

Excel初心者~中、上級者の皆様はまずはVBAを勉強しつつ情報収集を続けましょう。

勉強の進捗具合やPythonの動向次第ですがタイミングを見てPythonに乗り換える事をおすすめします。

VBAを使いこなしている人は少しずつPythonの勉強を始めてください。

そのうえでまた新しいアプリケーションや仕様が出てきた時は柔軟に対応していきましょう。

EnjoyExcel

タイトルとURLをコピーしました