SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Python in Excel実務入門:Excelデータ分析の新パラダイム

Excel分析の常識が変わる「Pythonネイティブ統合」――VBAとの使い分け

Python in Excel実務入門:Excelデータ分析の新パラダイム 第1回

Python in Excelに触れてみる:=PYとxl()の基本

 ここからはPython in Excelを実際に操作してみましょう。

 本節では、Pythonコードを記述するための「=PY」と、Excelのデータを取り込むための「xl()」を取り上げます。いずれも第2回以降のpandasによる前処理につながる基礎となるため、動作の仕組みを手順とあわせて確認していきます。

=PYの入力とコミット

 Python in Excelでコードを記述するには、通常の数式と同様にセルへの入力から始めます。コードを書きたいセルを選択し、数式バーに=PY(と入力するか、リボンの「数式」タブにある「Pythonの挿入」をクリックして開始します。

 この時点でセルは「Pythonセル」に切り替わり、数式バー左端に緑の「PY」アイコンが表示されます。コードは数式バーに記述します(図3)。

Pythonセル開始時(数式バーにPYアイコン)
図3:Pythonセル開始時(数式バーにPYアイコン)

[Note]「Pythonの挿入」が見つからない場合

 利用中のサブスクリプションが対象外、またはExcelのバージョンが古い可能性があります。「ファイル」→「アカウント」→「更新オプション」→「今すぐ更新」で最新ビルドへの更新を試したうえで、Excelを再起動してください。それでも表示されない場合は「ファイル」→「オプション」→「信頼センター」→「信頼センターの設定」→「プライバシー オプション」で、Microsoft 365の接続エクスペリエンスが有効になっているかを確認します。

 数式バーにPythonのコードを記述します。まず動作確認として、次のコードを入力します。

[リスト1]=PYでの最小実行例
1 + 2

 コードを書き終えたら、[Ctrl]+[Enter]キー(Macは[Cmd]+[Enter]キー)で確定します。通常の数式確定([Enter]キー単独)ではなく、[Ctrl]+[Enter]を使う点に注意してください。[Enter]キーだけを押した場合、コードは実行されず、数式バー上で改行(カーソルが次行に移動)として扱われます。

 確定後、コードはMicrosoftのクラウドに送られて実行され、処理結果がセルに返ってきます(図4)。セルには[PY]の表示と、結果(この例では3)が並んで表示されます。

Ctrl+Enter後、Pythonセルに結果が表示された状態
図4:Ctrl+Enter後、Pythonセルに結果が表示された状態

xl()でセル・範囲・テーブルを取得する

 次に「xl()」関数を使ったデータ取り込みを確認します。xl()は、Pythonセル内からExcelのセル・範囲・テーブルを参照するための関数で、PythonコードとExcelデータをつなぐ橋渡し役を担います。

 操作に先立ち、下表のサンプルデータをシートのA1:C4(見出し1行+データ3行)に入力しておきます。

表:サンプルデータ(A1:C4)
商品 売上 数量
A 1200 10
B 800 4
C 1500 8

 xl()には主に2つの使い方があります。順に確認していきます。

パターン1:単一セルの値を取得する

 単一のセルを取得するには、セル番地を文字列で指定します。

[リスト2]xl()で単一セルを取得
v = xl("C2")
v

 このコードを実行すると、セルC2の値がPythonの変数vに格納され、その値がセルに返されます(商品Aの行の「数量」列=10)。取得した値をPython側の計算や条件分岐に使いたい場面で役立ちます。

サンプル表(A1:C4)と `xl(
図5:サンプル表(A1:C4)とxl("C2")でセルC2の値(10)を取得した例

パターン2:セル範囲をDataFrameとして取得する

 複数のセルを範囲で取得するには、セル番地の範囲を文字列で指定します。headers=Trueを指定すると、1行目を列名として扱ったDataFrame形式で取得できます。なおDataFrameとは、pandasが扱う表形式のデータ構造です。

 行・列にラベルが付いており、Excelの表に近いイメージで扱えますが、セルごとに数式を書く代わりに列や行を一括して操作できる点が大きく異なります。

[リスト3]xl()でセル範囲をDataFrameとして取得
df = xl("A1:C4", headers=True)
df

 実行すると、セルには[PY] DataFrameのようにオブジェクト種別が表示されます。セルを選ぶとカードに行列サイズ(例:3×3)、列名(商品・売上・数量)、データがプレビューされます(図6)。

`xl(

図6:xl("A1:C4", headers=True)実行後、DataFrameのカードに列名つきでプレビューされた状態

出力モード「Pythonオブジェクト」「Excel値」切り替え

 Python in Excelのセルには、処理結果の返し方として2種類の出力モードがあります。

(1)Pythonオブジェクトモード

 処理結果がPythonのオブジェクトとしてセル内に格納され、セルをクリックするとプレビューが表示されます。DataFrameや画像など、Excelのセルに直接展開できないオブジェクトはこの形式で返されます。

(2)Excel値モード

 処理結果がExcelの値としてセルに展開されます。数値や文字列のような単一の値はそのままセルに表示され、複数の値を持つオブジェクト(DataFrameなど)はスピル(隣接セルへの自動展開)で出力されます。

 出力モードの切り替えは、Pythonセルを右クリックし「Python 出力」サブメニューから「Python オブジェクト」/「Excel の値」を選びます。環境によっては、セル右端のアイコンから切り替えるUIの場合もあります。

右クリックメニュー「Python 出力」でオブジェクト/Excelの値を切り替える
図7:右クリックメニュー「Python 出力」でオブジェクト/Excelの値を切り替える

 「Pythonオブジェクト」として結果が格納されたセルでは、セル横の挿入データアイコンからも操作できます。「データ型カードを表示」でプレビューを開いたり、「フィールド」からオブジェクトの属性をシートに取り出したりすることも可能です。

挿入データアイコンから「データ型カードを表示」または「フィールド」を選択する

図8:挿入データアイコンから「データ型カードを表示」または「フィールド」を選択する

「データ型カードを表示」を選んでDataFrameのプレビューカードが開いた状態
図9:「データ型カードを表示」を選んでDataFrameのプレビューカードが開いた状態

まとめ

 本稿では、Python in Excelが登場した背景と、VBAとの技術的な違いを整理しました。VBAはPC上でOfficeやファイルを操作するための言語であり、Python in ExcelはExcelのデータをクラウドで分析するエンジンと位置づけられます。

 「どちらが優れているか」ではなく「どの仕事にどちらが向くか」という視点で使い分けることが重要です。後半では、=PYでPythonコードを記述し、xl()でExcelのデータを参照する基本操作も確認しました。

 第2回では、pandasを使ったデータ前処理(クレンジング・集計・結合)を取り上げます。

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
この記事の著者

WINGSプロジェクト 西 潤史郎(ニシ ジュンシロウ)

WINGSプロジェクト について>有限会社 WINGSプロジェクト が運営する、テクニカル執筆コミュニティ(代表 山田...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/24693 2026/07/06 08:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング