0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Python in Excelでのデータ自動処理の活用法

Posted at

Python in Excelでのデータ自動処理の活用法

ExcelでPythonを使ってデータ処理を自動化できるって知っていますか?💡 これまではExcelのマクロ(VBA)でしかできなかったような作業も、最近の「Python in Excel」を使えばPythonコードで実現できます。ただし、Python in Excelは主にデータの分析や処理に強みがあり、従来のマクロのようにシート操作などを直接自動化することはできませ (excel23.com)】。この記事では、初心者向けにPython in Excelを活用したデータ自動処理の方法をカジュアルな口調で解説します。具体的には、以下の内容を扱います:

  • A列の「完了」を含む行を削除する方法(具体的なコード例あり)
  • Python in Excelでのデータ処理の例(データの並べ替え、フィルタリング、移動 など)
  • その他の活用例(マクロのように使う方法や、PythonとExcelの連携アイデア など)

それでは、Python in Excelを使ったデータ自動処理の世界を一緒に見ていきましょう!

Python in Excelって何?簡単なおさらい

まず最初に、「Python in Excel」とは何なのか簡単におさらいしましょう。これはMicrosoft Excel上で直接Pythonのコードを実行できる新機能で (excel23.com)】。Excelのセルに=PY(と入力すると、そのセル内でPythonコードを記述・実行できま (Get started with Python in Excel - Microsoft Support)】。感覚的には「Excelの関数の中にPythonを書く」ようなもので (excel23.com)】。

この機能ではpandasNumPyといったデータ分析用のライブラリを利用できます。一方で、Excelのブックやシートそのものを操作するようなライブラリ(例: openpyxl や xlwings)は利用できませ (excel23.com)】。つまり、データの計算や変換が得意で、セルの書式変更やシート操作といったことは直接はできないと覚えておきましょう。

(注: ExcelでPythonを使うにはMicrosoft 365の最新バージョンが必要です。Excelのフォーム画面で「Python」を有効にするか、セルに直接=PY(と入力してPythonセルを開始できま (Get started with Python in Excel - Microsoft Support)】。)

では早速、具体的なデータ処理の方法を見ていきます。

A列の「完了」を含む行を削除する方法

まず最初の例として、特定の文字列を含む行を削除する方法を試してみましょう。例えば、Excelの表でA列がタスクのステータスを表しており、ステータスに「完了」という文字が含まれる行はタスク完了済みだとします。これら「完了」したタスクの行をまとめて削除(除外)してみます。

普通に手作業でやるとフィルターをかけたり、マクロを書いたりする必要がありますが、Python in Excelならたった数行のコードでできます。

❏ コード例: 「完了」を含む行を除外する

以下がPython in ExcelでA列に「完了」を含む行を取り除くコード例です。Excel上のA1:D100の範囲にデータがあり、1行目はヘッダー行(項目名)になっていると想定しています。

import pandas as pd

# Excelシートからデータを取得し、DataFrameに読み込む
df = xl("A1:D100", headers=True)

# 'ステータス'列に「完了」を含む行をフィルタで除去する
df = df[~df["ステータス"].str.contains("完了", na=False)]

# 結果のDataFrameを表示(Excel上に出力)
df

コードのポイント説明:

  1. Excelのデータを読み込む: xl("A1:D100", headers=True)で、Excel上のA1:D100のセル範囲をPythonに取り込みます。headers=Trueとすることで、最初の行(A1:D1)を列名(ヘッダー)として扱い、2行目以降をデータとして読み込みま (Python is in Excel! - Here is a complete getting started guide for you » Chandoo.org - Learn Excel, Power BI & Charting Online)】。これにより、Excelの表がpandasのDataFrame(データフレーム)という表形式データに格納され、変数dfに保存されます。
  2. 「完了」を含む行を除去: df["ステータス"].str.contains("完了", na=False)は、dfの「ステータス」列の各値について「完了」という文字列を含むかどうかをチェックする条件になります。その前にあるチルダ(~)は条件を否定する演算子です。つまり、~df["ステータス"].str.contains("完了", na=False)は「ステータス列に『完了』を含まない」行を表します。この条件を使ってdf[...]を絞り込むことで、「完了」を含む行が取り除かれます。
    • 補足: na=Falseは欠損値(空欄)があってもエラーにならないようにするための指定です。欠損値は含まないものとみなして処理します。
  3. 結果を出力: 最後にdfと書くだけで、そのDataFrameがExcel上に出力されます。Pythonセルの結果として、新しい表(完了を含まないタスク一覧)がセルに表示されるはずです。例えば、このPythonコードを入力したセルをA1に置いた場合、結果の表はA1から下方向に展開(スピル)表示されます。

実行後、元のデータから**「完了」のタスク行がすべて消えた表**が得られます。このように、条件にマッチする行を一括で削除したい場合、pandasのフィルタリング機能を使うととても簡単ですね!

並べ替え(ソート)の例

次に、データの**並べ替え(ソート)**をやってみましょう。先ほどのタスク表の例でいうと、「優先度」などの列でタスクの順番を並べ替えたいケースがあります。Pythonを使えば、複雑な並べ替えも1行で実現可能です。

❏ コード例: データを特定の列でソートする

例えば、タスク表に「優先度」という数値列があり、数値が小さいほど重要度が高いとします。これを昇順(小さい順)に並べ替えて、高優先度のタスクを上に持ってきてみます。

import pandas as pd

# データをDataFrameに読み込む(例としてA1:D100範囲)
df = xl("A1:D100", headers=True)

# '優先度'列の値で昇順ソートする
df_sorted = df.sort_values("優先度", ascending=True)

# 結果を出力
df_sorted

コードのポイント説明:

  • df.sort_values("優先度", ascending=True)で、DataFrame dfを「優先度」列の値で並べ替えています。ascending=Trueは昇順(小さい→大きい)でソートする指定です。デフォルトもTrueなので省略可能です。
  • 結果を新しいDataFrame df_sortedに入れ、最後に表示しています(直接df = df.sort_values(...)としてもOKです)。

実行すると、優先度の低い値(重要度高いタスク)から順番に並んだ表が得られます。例えば「優先度1」が一番上、「優先度2」がその次…という具合です。もちろん、降順にしたい場合はascending=Falseにすれば逆順に並べ替えられます。

➕ ワンポイント: 複数の列でソートすることもできます。その場合はsort_valuesにリストを渡します。例: df.sort_values(["担当者", "期限"], ascending=[True, False])とすると、「担当者」ごとに「期限」降順で並べる…といった凝った並べ替えも一発です。

フィルタリングの例

次はデータのフィルタリングです。特定の条件に合う行だけを抽出したい場合にもPythonは便利です。Excelのオートフィルター機能のようなことを、Pythonでは条件指定でサクッと実現できます。

❏ コード例: 条件を満たす行を抽出する

例として、タスク表から担当者が「田中」さんのタスクだけを抜き出してみましょう。部署ごと・担当者ごとにデータを絞り込みたい、なんて場合です。

import pandas as pd

# データをDataFrameに読み込む
df = xl("A1:D100", headers=True)

# '担当者'列が「田中」に一致する行だけを残す
df_filtered = df[df["担当者"] == "田中"]

# 結果を出力
df_filtered

コードのポイント説明:

  • df["担当者"] == "田中"という条件式で、「担当者」列が"田中"という文字列と等しいかをチェックしています。この結果はTrue/Falseの配列(ブーリアンインデックス)になります。
  • df[...]にそのブーリアンインデックスを渡すことで、条件がTrueの行(田中さんが担当の行)のみが抽出されたdf_filteredが得られます。
  • 結果を表示すると、「担当者」が田中さんであるタスクだけが一覧表示されます。

このように、特定の担当者や特定の値に一致する行だけを簡単に取り出せます。同様に、数値条件のフィルタも可能です。例えば「優先度が2以下の行だけ」にしたい場合はdf[df["優先度"] <= 2]のように比較演算子を使えます。文字列の部分一致なら先ほど利用したstr.contains==の代わりに使うことで、「名前に〇〇が含まれる行だけ」といった抽出もできます。

➕ ワンポイント: 複数条件のフィルタも組み合わせ可能です。例えば「担当者が田中 かつ ステータスが未完了」のようにAND条件で絞るには、 (df["担当者"]=="田中") & (df["ステータス"]!="完了") のように&演算子で条件を組み合わせます。OR条件なら|を使います。Excelの複雑なオートフィルター条件も、Pythonなら読みやすく書けますね。

他の活用例:PythonをExcelマクロのように使うには?

ここまで、Python in Excel上でデータを処理・変換する方法を見てきました。では、Excelのマクロのように作業を自動化するにはどう活用できるでしょうか?最後に、いくつかアイデアやポイントを紹介します。

  • マクロとの違いを理解する: 繰り返しになりますが、Python in ExcelはExcel操作そのものの自動化(マクロ)とは目的が異なりま (excel23.com) (excel23.com)】。Pythonコードは基本的にセルや範囲を入力(引数)として受け取り、計算・処理して結果をセルに返すもので (excel23.com)】。したがって、シートの追加ブックの保存セルの書式設定など、Excelマクロ(VBA)が得意とする操作は直接はできません (excel23.com)】でも述べられているように、Python in ExcelではExcelファイル操作系のライブラリは使えないためです。

  • データ処理の自動化に徹する: 上記の制約はありますが、裏を返せばデータ処理に特化して自動化できるということでもあります。例えば「毎週出力される売上データのExcelファイルから特定の条件で集計する」「複数のシートに分散したデータを読み込んで結合し、結果をレポート用シートに返す」など、人手でやっていた集計・加工をPythonで自動化できます。Pythonは高度な計算や文字列処理も得意なので、Excelの関数だけでは難しかった処理もシンプルに書けます。

  • Excel外からPythonで操作する方法も: もし**「Excel自体の操作」**(たとえばシートの追加や別ブックへのコピーなど)も含めて自動化したい場合は、Python in Excelの外でPythonを使うアプローチもあります。具体的には、openpyxlというライブラリを使ってExcelファイルを読み書きしたり、xlwingsというライブラリでExcelアプリケーションを操作したりする方法です。openpyxlを使えば、Pythonスクリプト上でExcelのセルやシートを自由に編集・保存できます。また、xlwingsを使うとExcelアプリそのものを動かせるので、ExcelからPythonを実行したりExcelの機能をほぼすべて操作したりすることが可能で (PythonでExcelを操作する方法は3ステップ!環境構築方法やライブラリについて解説)】。これらを組み合わせれば、かなり高度なExcel業務の自動化も実現できます。

  • Python in Excelと併用する: 上記の外部連携を活用すれば、例えばExcelのボタンからPythonスクリプト(xlwings経由)を実行してデータ処理&ブック保存まで一気に行う、といったことも可能です。一方で、単純なデータ整理や計算であればPython in Excel単体で十分でしょう。ケースバイケースで使い分けられると理想的ですね。現在のPython in Excelは分析向けの機能に留まりますが、データ処理の自動化ツールとしてもうまく組み合わせて活用できます。

(※補足: 今後MicrosoftがPython in Excelの機能を拡張し、より多くの操作が可能になる可能性もあります。2025年現在ではまだ分析処理が中心ですが、最新情報もチェックしてみてくださいね。)

まとめ

今回はPython in Excelでデータを自動処理する方法について、初心者向けに紹介しました。Excelの表をpandasのDataFrameに読み込んでしまえば、「特定の文字を含む行を削除」「データを並べ替え」「条件でフィルタリング」といった操作を、驚くほどシンプルなコードで実現できます。最初は「Pythonって難しそう…」と感じるかもしれませんが、実際に触ってみると英語の組み合わせで手順を書いているような感覚で意外と直感的です。

データ処理の自動化という観点では、Python in Excelは強力な武器になります。煩雑な手作業や複雑な数式をPythonコードに置き換えることで、作業ミスを減らしつつ効率アップが期待できます。ぜひこの記事のコード例を参考に、手元のExcelでPythonデビューしてみてください!「完了」の行がスッと消えたり、思い通りにデータが並び替わる様子を体験すると、きっとPythonの便利さに驚くはずですよ。

最後に一言、楽しみながら試してみることが上達のコツです。😊 自動処理で空いた時間を有効活用しつつ、Python in Excelで快適なExcelライフを送りましょう!


参考資料・情報源: Python in Excel公式ドキュメ (Get started with Python in Excel - Microsoft Support)7】、エクセル兄さんの解説ブ (excel23.com) (excel23.com)5】、DSK社ブ (PythonでExcelを操作する方法は3ステップ!環境構築方法やライブラリについて解説)0】など.

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?