Python in Excelに触れてみる:=PYとxl()の基本
ここからはPython in Excelを実際に操作してみましょう。
本節では、Pythonコードを記述するための「=PY」と、Excelのデータを取り込むための「xl()」を取り上げます。いずれも第2回以降のpandasによる前処理につながる基礎となるため、動作の仕組みを手順とあわせて確認していきます。
=PYの入力とコミット
Python in Excelでコードを記述するには、通常の数式と同様にセルへの入力から始めます。コードを書きたいセルを選択し、数式バーに=PY(と入力するか、リボンの「数式」タブにある「Pythonの挿入」をクリックして開始します。
この時点でセルは「Pythonセル」に切り替わり、数式バー左端に緑の「PY」アイコンが表示されます。コードは数式バーに記述します(図3)。
[Note]「Pythonの挿入」が見つからない場合
利用中のサブスクリプションが対象外、またはExcelのバージョンが古い可能性があります。「ファイル」→「アカウント」→「更新オプション」→「今すぐ更新」で最新ビルドへの更新を試したうえで、Excelを再起動してください。それでも表示されない場合は「ファイル」→「オプション」→「信頼センター」→「信頼センターの設定」→「プライバシー オプション」で、Microsoft 365の接続エクスペリエンスが有効になっているかを確認します。
数式バーにPythonのコードを記述します。まず動作確認として、次のコードを入力します。
1 + 2
コードを書き終えたら、[Ctrl]+[Enter]キー(Macは[Cmd]+[Enter]キー)で確定します。通常の数式確定([Enter]キー単独)ではなく、[Ctrl]+[Enter]を使う点に注意してください。[Enter]キーだけを押した場合、コードは実行されず、数式バー上で改行(カーソルが次行に移動)として扱われます。
確定後、コードはMicrosoftのクラウドに送られて実行され、処理結果がセルに返ってきます(図4)。セルには[PY]の表示と、結果(この例では3)が並んで表示されます。
xl()でセル・範囲・テーブルを取得する
次に「xl()」関数を使ったデータ取り込みを確認します。xl()は、Pythonセル内からExcelのセル・範囲・テーブルを参照するための関数で、PythonコードとExcelデータをつなぐ橋渡し役を担います。
操作に先立ち、下表のサンプルデータをシートのA1:C4(見出し1行+データ3行)に入力しておきます。
| 商品 | 売上 | 数量 |
| A | 1200 | 10 |
| B | 800 | 4 |
| C | 1500 | 8 |
xl()には主に2つの使い方があります。順に確認していきます。
パターン1:単一セルの値を取得する
単一のセルを取得するには、セル番地を文字列で指定します。
v = xl("C2")
v
このコードを実行すると、セルC2の値がPythonの変数vに格納され、その値がセルに返されます(商品Aの行の「数量」列=10)。取得した値をPython側の計算や条件分岐に使いたい場面で役立ちます。
xl("C2")でセルC2の値(10)を取得した例パターン2:セル範囲をDataFrameとして取得する
複数のセルを範囲で取得するには、セル番地の範囲を文字列で指定します。headers=Trueを指定すると、1行目を列名として扱ったDataFrame形式で取得できます。なおDataFrameとは、pandasが扱う表形式のデータ構造です。
行・列にラベルが付いており、Excelの表に近いイメージで扱えますが、セルごとに数式を書く代わりに列や行を一括して操作できる点が大きく異なります。
df = xl("A1:C4", headers=True)
df
実行すると、セルには[PY] DataFrameのようにオブジェクト種別が表示されます。セルを選ぶとカードに行列サイズ(例:3×3)、列名(商品・売上・数量)、データがプレビューされます(図6)。
図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オブジェクト」として結果が格納されたセルでは、セル横の挿入データアイコンからも操作できます。「データ型カードを表示」でプレビューを開いたり、「フィールド」からオブジェクトの属性をシートに取り出したりすることも可能です。
図8:挿入データアイコンから「データ型カードを表示」または「フィールド」を選択する
まとめ
本稿では、Python in Excelが登場した背景と、VBAとの技術的な違いを整理しました。VBAはPC上でOfficeやファイルを操作するための言語であり、Python in ExcelはExcelのデータをクラウドで分析するエンジンと位置づけられます。
「どちらが優れているか」ではなく「どの仕事にどちらが向くか」という視点で使い分けることが重要です。後半では、=PYでPythonコードを記述し、xl()でExcelのデータを参照する基本操作も確認しました。
第2回では、pandasを使ったデータ前処理(クレンジング・集計・結合)を取り上げます。
