# 【サンプルコード付き】PythonでのExcel操作でできること5選！

> 当サイト【スタビジ】の本記事では、PythonでのExcel操作のやり方についてコード付きで解説していきます。実務でもよく利用されるExcel！Pythonを使って作業を効率化していきましょう！

- URL: https://toukei-lab.com/python_excel
- 公開: 2024.06.02 / 更新: 2026.10.28
- サイト: スタビジ（https://toukei-lab.com）

:::talk{who="umatan"}
当サイト【スタビジ】の本記事では、PythonでのExcel操作のやり方についてコード付きで解説していきます。実務でもよく利用されるExcel！Pythonを使って作業を効率化していきましょう！
:::

こんにちは！スタビジ編集部です！

今回は<mark>Pythonを使ったExcel操作のやり方について解説していきます。</mark>

実務でもよく使われる**Excel**！ただ、以下のように感じる方も多いのではないでしょうか。

:::talk{who="man" side="left"}
手動でデータをまとめたり、グラフを作ったりが面倒、、、
:::

:::talk{who="woman"}
いつも同じような作業するから効率化したい！
:::

Pythonを使ってExcelの操作を効率化していきましょう！

Excelの勉強方法については以下の記事でまとめているので参考にしてみて下さい。

<https://toukei-lab.com/excel_learn>

詳しくPythonでExcelを操作する方法を知りたい方は以下のUdemyコースで僕が講師として教えていますので参考にしてみてください！

:::box
**【初心者向け】PythonでExcelを操作して煩雑な日々の業務を効率化・自動化する方法を学ぼう！**

[![](/wp-content/uploads/2024/06/PythonExcelUdemy.jpg)](https://www.udemy.com/course/python-excel-effective/?referralCode=80FF6A7608B01A68391E)

<table class="table">
<tbody>
<tr>
<th>【時間】</th>
<td><span>3.5時間</span></td>
</tr>
<tr>
<th>【レベル】</th>
<td><span>初級</span></td>
</tr>
</tbody>
</table>

PythonでExcelを操作して日々の煩雑な業務を効率化・自動化して解放されたいならこれ！今なら購入時に「NZWCLGF4BTZENY6E」という講師クーポンコードを入れると90%オフ以上の割引価格になりますのでぜひご受講ください！

::button[このコースを見てみる]{href="https://www.udemy.com/course/python-excel-effective/?referralCode=80FF6A7608B01A68391E" note="＼30日以内なら返金無料／"}
:::

:::talk{who="umatan"}
また当メディアが運営するスタアカの以下のコースでPythonの基礎をマスターできます！ぜひ参考にしてみて！
:::

:::box
**[スタアカ「03.Python基礎」](https://toukei-lab.com/achademy/courses/python-beginner/)**
:::

以下のYouTube動画でも解説していますので、あわせてチェックしてみてください！

::youtube{#q6C8rVHF84k}

## PythonでExcelを操作するメリット

PythonでExcelを操作することってどんなメリットがあるのか、簡単に見ていきましょう。

PythonでExcelを操作するメリットは以下になります。

:::box
**・自動化による効率化**\
**・データ処理や分析への利用**\
**・他のツールとの連携**
:::

それぞれ見ていきましょう。

### 自動化による効率化

Excelでの操作をPythonのコード化することで繰り返し行う作業は自動化することが可能です。

また手動作業に比べて、<mark>ヒューマンエラーの発生を抑えられるので、作業品質の向上にもつながります。</mark>

### データ処理や分析への利用

Pythonはデータ処理や分析のためのライブラリを多くサポートしています。

そのためExcelで集めたデータを処理・分析したい場合Pythonとの親和性が高いです。

Excel上で手動でデータを加工したり、グラフを作ったりするのではなく、<mark>Pythonにデータを取り込み作業することで、ライブラリを使ったより効果的な分析が可能になります。</mark>

### 他のツールとの連携

PythonはExcel操作だけでなくデータベース接続や機械学習、API利用など様々な用途に対応できます。

そのため、Excelを他のツールと連携することで<mark>より高度な分析や作業効率化につなげることが可能です。</mark>

## PythonでExcelの操作実践

実際にPythonでExcel操作をしていきましょう。

今回は以下の操作を行っていきます。

:::box
**・Excelファイルの作成**\
**・Excelのデータを編集する**\
**・Excelの関数を使う**\
**・グラフを作成する**\
**・pandasを使ったデータ入力**
:::

本記事でのPythonの作業は「[**Jupyter Notebook**](/python-how)」で行っています。

Jupyter Notebookについては以下の記事で解説しているので、参考にしてみて下さい。

<https://toukei-lab.com/python-how>

以下のYoutube動画でも簡単にPythonをExcelで操作する方法を解説しているのであわせてチェックしてみてください。

::youtube{#b2UFjF7LXHs}

### PythonでExcelファイルを作成する

ここではPythonで「**Excelファイルの作成**」操作をやっていきます。

まずPythonでExcelを操作するのに必要なライブラリ”**[openpyxl](https://pypi.org/project/openpyxl/)**“をインストールします。

```python
pip install openpyxl
```

“[openpyxl](https://pypi.org/project/openpyxl/)“は<mark>PythonでExcelファイルを読み書きするためのオープンソースのライブラリです。</mark>

PythonからOffice Open XML 形式をネイティブに読み書きするためのライブラリがなかったということで、有志によって開発されました。

openpyxlをインポートしてExcelファイルを作成します。

```python
import openpyxl
from openpyxl import Workbook

# 新しいワークブック（Excelファイル）を作成
wb = Workbook()

# アクティブなシートを取得
ws = wb.active

# シート名を変更
ws.title = "samplesheet"

# A1セルにデータを書き込む
ws['A1'] = "Hello, World!"

# ファイルを保存
wb.save("sample.xlsx")
```

openpyxlライブラリの”**Workbook()クラス**“を使うことで、<mark>Excelファイルの作成や中身のシートやセルの操作を行うことが出来ます。</mark>

実際にフォルダを見てみると”sample.xlsx”が作成されていて、中身も指定された内容になっています。

![python_excel](/wp-content/uploads/2024/06/python_excel1-min.jpg)

:::talk{who="umatan"}
Excel操作をするためのPythonライブラリがあることにびっくり！

おかげでExcelファイルの作成も簡単に出来るね！
:::

### PythonでExcel内のデータを呼び出す

続いてPythonで「**Excel内のデータの呼び出す**」操作をしていきましょう。

最初に既存のExcelファイルに対してデータの書き込みを行います。

```python
from openpyxl import load_workbook

# 既存のExcelファイルをロード
wb = load_workbook('sample.xlsx')

# 既存のシート読み込み
ws = wb['samplesheet']

# データを書き込む
ws['A1'] = "名前"
ws['B1'] = "年齢"
ws['A2'] = "Alice"
ws['B2'] = 30
ws['A3'] = "Bob"
ws['B3'] = 25

# ファイルを保存
wb.save('sample.xlsx')
```

既存のExcelファイルの読み込みには”**load_workbook関数**“を使用します。

データの書き込みは<mark>書き込むシートおよびセルを指定して、そこにデータを入力します。</mark>

またセルの指定はセル名ではなく行番号と列番号を指定して、値を入力することも可能です。

```python
ws.cell(row=4, column=1).value = "John"
ws.cell(row=4, column=2).value = 28
```

Worksheetオブジェクトの”**cellメソッド**“を使うことで行番号・列番号をしてセルの操作が出来ます。

実際にExcelを見るとデータが入力されていることが確認できます。

![python_excel](/wp-content/uploads/2024/06/python_excel2-min.jpg)

続いて、Excel内のデータを呼び出す方法について見ていきます。

```python
# 既存のExcelファイルをロード
wb = load_workbook('sample.xlsx')

# 既存のシート読み込み
ws = wb['samplesheet']

# 特定のセルのデータを読み込む
a1_value = ws['A1'].value
b2_value = ws.cell(row=2, column=2).value

# データを表示する
print(f"A1: {a1_value}")
print(f"B2: {b2_value}")
```

データの表示は”**cell.value**“でそのセルの値を取得することが出来ます。

また、for文を活用することで複数セルの値を一度に取得することも可能です。

```python
# セル範囲のデータを読み込む
for row in ws['A1:B3']:
    for cell in row:
        print(cell.value, end=' ')
    print()  # 改行
```

上記では行ごとにセルの値を表示しています。

他にも”**ws.iter_rowsメソッド**“を利用することで、シート内のすべての行を表示することも出来ます。

```python
# すべての行のデータを読み込む
for row in ws.iter_rows(values_only=True):
    print(row)
```

“ws.iter_rowsメソッド”では指定した行の反復処理をするために使用されます。

<mark>このメソッドのパラメータ”values_only”に”True”を設定するとセルの値のみを返すため</mark>、すべての行のデータを読み込むことが出来ます。

実際の出力結果は以下のようになります。

![python_excel](/wp-content/uploads/2024/06/python_excel4-min.jpg)

:::talk{who="umatan"}
openpyxlを使うと簡単にExcel内のデータを簡単に取得できる！
:::

### Excelの関数を使う

Pythonのコード内で「**Excelの関数を使った操作**」について見ていきましょう。

まずは簡単な算術演算を使った操作について見ていきます。

```python
from openpyxl import Workbook

# 既存のExcelファイルをロード
wb = load_workbook('sample.xlsx')

# 新しいシートを作成
ws = wb.create_sheet(title='function')

# データを入力
data = [
    ["商品", "個数", "値段", "合計"],
    ["りんご", 5, 100],
    ["バナナ", 7, 150],
    ["オレンジ", 4, 120]
]

for row in data:
    ws.append(row)

# D列に個数と値段の掛け合わせを入力
for row in range(2, 5):
    ws[f'D{row}'] = f'=B{row}*C{row}'
    
# セルにSUM関数の数式を入力
ws['D5'] = '=SUM(D2:D4)'

# ファイルを保存
wb.save("sample.xlsx")
```

データの入力には”**ws.appendメソッド**“を使う方法もあり、<mark>このメソッドではリストまたはタプルとして与えられたデータを新しい行に追加していきます。</mark>

セル同士の掛け算はExcelと同様に「セル名×セル名」で計算することが出来ます。

Excel関数の入力はデータ入力と同じく<mark>セルを指定して、そこにExcelの関数を代入することで実現できます。</mark>

実際にExcelを開くと、指定したセルに数式や関数が入力されているのが確認できます。

![python_excel](/wp-content/uploads/2024/06/python_excel5-min.jpg)

ただし、この方法ではExcelのセルに関数を入力する必要があります。

せっかくPythonで操作しているので、Pythonの関数でExcel関数を模倣して実行してみましょう。

```python
from openpyxl import Workbook, load_workbook

def vlookup(sheet, lookup_value, lookup_column, return_column):
    """
    VLOOKUP関数をPythonでシミュレートする。
    :param sheet: 検索対象のシート
    :param lookup_value: 検索する値
    :param lookup_column: 検索対象の列番号（1から始まる）
    :param return_column: 返す値の列番号（1から始まる）
    :return: 見つかった値
    """
    for row in sheet.iter_rows(min_row=2, max_col=sheet.max_column, values_only=True):
        if row[lookup_column - 1] == lookup_value:
            return row[return_column - 1]
    return None

# 既存のExcelファイルをロード
wb = load_workbook('sample.xlsx')

# 既存のシート読み込み
ws = wb['function']

# Python内でVLOOKUPを実行
result = vlookup(ws, "りんご", 1, 2)

# 結果を出力
print(f"りんごの個数: {result}")
```

VLOOKUP関数をPythonの関数として定義することで、Excelのセル内に直接関数を入力しなくても必要な情報を取ってくることが出来ます。

:::talk{who="umatan"}
Excelの関数をセルに入力して使うこともPythonの関数として定義して使うことも出来る！

Pythonで操作することで、出来ることが増えるね！
:::

### グラフを作成する

Excel操作でよく利用される「**グラフの作成**」操作を見ていきましょう。

グラフの作成ではまずopenpyxlの”**Referenceクラス**“を使ってグラフを作成するデータの範囲を指定します。

```python
from openpyxl import Workbook
from openpyxl.chart import BarChart, Reference
from openpyxl.utils import get_column_letter

# 既存のExcelファイルをロード
wb = load_workbook('sample.xlsx')

# 新しいシートを作成
ws = wb.create_sheet(title='chart')

# データを入力
data = [
    ["日付", "売上"],
    ["2024-01-01", 1500],
    ["2024-01-02", 2000],
    ["2024-01-03", 1700],
    ["2024-01-04", 2300],
    ["2024-01-05", 2200]
]

for row in data:
    ws.append(row)

# グラフ用のデータ範囲を指定
date_col = Reference(ws, min_col=1, min_row=2, max_row=6)
sales_col = Reference(ws, min_col=2, min_row=1, max_row=6)
```

Referenceクラスでは<mark>参照するワークシート、データ範囲の開始列～終了列、開始行～終了行を設定することでデータ範囲を指定できます。</mark>

データ範囲を指定した後は、openpyxlのChartクラスを使って、グラフを作成します。

Chartクラスには主に以下があります

:::box
- **BarChart**：棒グラフを作成するためのクラス
- **LineChart**：折れ線グラフを作成するためのクラス
- **PieChart**：円グラフを作成するためのくらす
- **ScatterChart**：散布図を作成するためのクラス
- **AreaChart**：面グラフを作成するためのクラス
:::

今回は”BarChartクラス”を使って棒グラフを作成します。

```python
# 棒グラフを作成
bar_chart = BarChart()
bar_chart.add_data(sales_col, titles_from_data=True)
bar_chart.set_categories(date_col)
bar_chart.title = "日次売上"
bar_chart.x_axis.title = "日付"
bar_chart.y_axis.title = "売上"

# グラフをシートに追加
ws.add_chart(bar_chart, "D2")

# Excelファイルを保存
wb.save("sample.xlsx")
```

“BarChartクラス”の”add_dataメソッド”でReferenceクラスで指定したデータ範囲をグラフに追加しています。

“set_categoriesメソッド”で日付をカテゴリーとして設定しました。

実際の作成したグラフが以下になります。

![python_excel](/wp-content/uploads/2024/06/python_excel6-min.jpg)

:::talk{who="umatan"}
グラフもPythonを使って作成できる！

同じようなグラフを作る場合はPythonでやった方がコードを再利用できる分楽になりそう！
:::

### pandasを使ったデータ入力

これまで”**openpyxl**“を使ったExcel操作を見ていきました。

PythonでExcelを操作する際はopenpyxlが一般的ですが、他に”[**pandas**](/python-pandas)“を使ってもExcel操作が可能です。

“[pandas](/python-pandas)“はデータ分析の際のデータの読み込みや前処理や集計、可視化などによく使われるライブラリになります。

pandasについては以下の記事で詳しくまとめているので、参考にしてみて下さい。

<https://toukei-lab.com/python-pandas>

では実際にpandasを使ってExcelシートを読み込んでみます。

```python
import pandas as pd

# Excelファイルの読み込み
df = pd.read_excel('sample.xlsx', sheet_name='function', usecols="A:C", nrows=3)

# 読み込んだデータフレームを表示
print(df)
```

pandasの”**read_excel関数**“でExcelファイルの読み込みが出来ます。

“read_excel関数”では”usecols”で読み込む列を指定するといった<mark>オプションを使って読み込む情報を制限します。</mark>

![python_excel](/wp-content/uploads/2024/06/python_excel8-min.jpg)

Excelファイルへのデータの書き込みはpandasでデータフレームを作成してそれを追加する形で行います。

データフレームに行を足すときは、pandas 2.0で`append`がなくなったので`pd.concat`を使います。

```python
# 新しいデータを追加
new_data = {
    '商品': ['いちご'],
    '個数': [8],
    '値段': [200]
}
df = pd.concat([df, pd.DataFrame(new_data)], ignore_index=False)

# データフレームをExcelファイルに書き込む
with pd.ExcelWriter('sample.xlsx', engine='openpyxl', mode='a') as writer:
    # データフレームを新しいシートとして追加
    df.to_excel(writer, sheet_name='pandas', index=False)
```

Excelファイルへの書き込みは”**ExcelWriterクラス**“を利用します。

“ExcelWriterクラス”でファイル名、Excelファイルのエンジン、書き込みモードを指定してExcelファイルを開きます。

書き込みモードは<mark>デフォルトは”w”で新規にファイルを作成しますが、”a”を指定すると既存のファイルへ書き込みすることが出来ます。</mark>

Excelを開くとデータが追加されていることを確認できます。

![python_excel](/wp-content/uploads/2024/06/python_excel9-min.jpg)

:::talk{who="umatan"}
pandasを使ってもExcelのデータを読み書きが出来る！
:::

## PythonでExcel操作 まとめ

![](/wp-content/uploads/2024/06/PythonExcel-640x360.jpg)

ここまでご覧いただきありがとうございました！

本記事では、PythonでのExcel操作について”openpyxl”と”pandas”での操作方法を見ていきました。

以下のような場合分けで使い分けると良いと思います。

:::box
**・Excel自体を操作してデータを入力したり、グラフ作成したりする場合**__\
⇒”openpyxl“__\
**・Excelのデータを取り込んでデータ分析したい場合**\
⇒”**pandas**”
:::

:::talk{who="umatan"}
PythonでExcelの操作が簡単に出来ることがわかったね！

他のPythonのライブラリと組み合わせて、いろんなことを試してみよう！
:::

冒頭にもお伝えしましたが、詳しくPythonでExcelを操作する方法を知りたい方は以下のUdemyコースで僕が講師で教えてますので参考にしてみてください！

:::box
**【初心者向け】PythonでExcelを操作して煩雑な日々の業務を効率化・自動化する方法を学ぼう！**

[![](/wp-content/uploads/2024/06/PythonExcelUdemy.jpg)](https://www.udemy.com/course/python-excel-effective/?referralCode=80FF6A7608B01A68391E)

<table class="table">
<tbody>
<tr>
<th>【時間】</th>
<td><span>3.5時間</span></td>
</tr>
<tr>
<th>【レベル】</th>
<td><span>初級</span></td>
</tr>
</tbody>
</table>

PythonでExcelを操作して日々の煩雑な業務を効率化・自動化して解放されたいならこれ！今なら購入時に「NZWCLGF4BTZENY6E」という講師クーポンコードを入れると90%オフ以上の割引価格になりますのでぜひご受講ください！

::button[このコースを見てみる]{href="https://www.udemy.com/course/python-excel-effective/?referralCode=80FF6A7608B01A68391E" note="＼30日以内なら返金無料／"}
:::

また、Excelで収集したデータをデータ分析したいと思った方は、当メディアが運営する教育サービス[「スタアカ（スタビジアカデミー）」](https://toukei-lab.com/achademy/)の講座をチェックしてみてください。

:::box
**[スタアカ「04.データ加工集計可視化」](https://toukei-lab.com/achademy/courses/data-preprocess/)**
:::

:::box
**AIデータサイエンス特化スクール「スタアカ」**

![スタアカ（スタビジアカデミー）のトップページ](/wp-content/uploads/2026/10/achademy-top.jpg)
:::

<table class="table">
<tbody>
<tr>
<th>【価格】</th>
<td>ライトプラン：1,280円/月（全コースが受講し放題）<br>
プレミアムプラン：129,800円（通常149,800円・買い切り）</td>
</tr>
<tr>
<th>【オススメ度】</th>
<td><span class="stars" role="img" aria-label="5点中5点" data-value="5"></span></td>
</tr>
<tr>
<th>【サポート体制】</th>
<td><span class="stars" role="img" aria-label="5点中4点" data-value="4"></span></td>
</tr>
<tr>
<th>【受講形式】</th>
<td>オンライン形式</td>
</tr>
<tr>
<th>【学習範囲】</th>
<td>統計学・機械学習・ディープラーニングを網羅的に学ぶ<br>
生成AI（LLM・RAG・プロンプトエンジニアリング）を学ぶ<br>
SQLとPythonを組み合わせて実データを使った様々なワークを行う<br>
実践的なビジネスフレームワークを学ぶ<br>
マーケティングの実行プラン策定</td>
</tr>
</tbody>
</table>

データサイエンティストとしての自分の経験をふまえてエッセンスを詰め込んだのがこちらのスタビジアカデミー、略して「[スタアカ](https://toukei-lab.com/achademy/)」！！

月額1,280円のライトプランで、統計学から機械学習・生成AIまで全コースが受講し放題です！

<mark>プレミアムプランでは、24時間以内の質問対応と現役データサイエンティストとの1on1（30分×4回）を実施します！</mark>

カリキュラム自体は、他のスクールと比較して圧倒的に良い自信があるのでぜひ受講してみてください！

他のスクールのカリキュラムはPythonでの機械学習実装だけに焦点が当たっているものが多く、実務に即した内容になっていないものが多いです。

<mark>そんな課題感に対して、実務で使うことの多いSQLや機械学習のビジネス導入プロセスの理解なども合わせて学べるボリューム満点のコース</mark>になっています！

Pythonが初めての人でも学べるようなカリキュラムにしておりますので是非チェックしてみてください！

ウォルマートのデータを使って商品の予測分析をしたり、実務で使うことの多いGoogleプロダクトのBigQueryを使って投球分析をしたり、データサイエンティストに必要なビジネス・マーケティングの基礎を学んでマーケティングプランを作ってもらったりする盛りだくさんの内容になってます！

:::box
**・BigQuery上でSQL、Google Colab上でPythonを使い野球の投球分析**\
**・世界最大手小売企業のウォルマートの実データを用いた需要予測**\
**・ビジネス・マーケティングの基礎を学んで実際の企業を題材にしたマーケティングプランの策定**\
**・生成AIのAPIを使ってチャットボットやAIエージェントを作る**
:::

::button[スタアカの受講はこちら]{href="https://toukei-lab.com/achademy/" note="＼今すぐ試す／"}

Pythonでスプレッドシートを操作する方法については以下の記事で解説しているので、参考にしてみて下さい。

<https://toukei-lab.com/python_spreadsheet>

その他、自動化について興味がある方はGAS（Google Apps Script）の自動化について紹介しているのでチェックしてみて下さい。

<https://toukei-lab.com/google_apps_script>