Pythonその他

PythonでOpenPyXLを利用してExcel上の重複するキーに対応する値を一括設定してみた

PythonからExcelファイル(.xlsx形式)を読み書き・操作するためのライブラリにOpenPyXL(オープンパイエクセル)があり、プログラムでExcelファイルの作成、データの読み書き、セルの書式設定(色、罫線など)を実施することができる。

今回は、OpenPyXLを利用して、重複するキーに対応する値を一括設定してみたので、そのサンプルプログラムを共有する。

前提条件

以下の記事のPythonのインストールが完了していること。

Pythonフレームワーク「Django」を利用したWebアプリケーションを作成してみたDjango(ジャンゴ)とは、Pythonで開発する際のWebフレームワークの1つで、無料のオープンソースとして公開されていて、高品質な...

OpenPyXLのインストール

2026年1月9日現在の最新バージョン(3.1.5)のOpenPyXLをインストールする。その手順は、以下の通り。

1) コマンドプロンプトで「python –version」コマンドを実行すると、以下のように、Pythonのバージョンが確認できる。
openpyxlのインストール_1

2)「pip install openpyxl」コマンドを実行し、最新バージョンのopenpyxlをインストールする。
openpyxlのインストール_2

3)「pip show openpyxl」コマンドを実行すると、以下のように、インストールしたopenpyxlのバージョンが確認できる。
openpyxlのインストール_3

サンプルプログラムの作成

作成したサンプルプログラムの内容(write_duplicate_key_data.py)は、以下の通り。

from openpyxl import load_workbook

# 入力ファイル(input.xlsx)を読み込む
input_file_path = 'input.xlsx'
wb = load_workbook(input_file_path)

# 取得元シート・書込先シートを選択する
source = wb['取得元']
target = wb['書込先']

# 書込先シートから、キー・値を取得する
for target_row in target.iter_rows(min_row=2, min_col=1
        , max_row=target.max_row, max_col=2):
    # 取得元シートから、キー・値を取得する
    for source_row in source.iter_rows(min_row=2, min_col=1
            , max_row=source.max_row, max_col=2):
        # 書込先シートのキーが、取得元シートのキーと一致する場合
        if target_row[1].value == source_row[0].value:
            # 書込先シートの値に、取得元シートの値を設定する
            target_row[0].value = source_row[1].value
            break

# ワークブックを出力ファイル(output.xlsx)保存
wb.save("output.xlsx")

なお、入力ファイル(input.xlsx)の内容は、以下の通り。
input_xlsx

エンジニアファーストバナー

サンプルプログラムの実行結果

サンプルプログラムの実行結果は、以下の通り。

1) 以下のように、サンプルプログラム(write_duplicate_key_data.py)と入力ファイル(input.xlsx)が同フォルダ上にある状態にする。
サンプルプログラムの実行結果_1

2) サンプルプログラム(write_duplicate_key_data.py)を実行すると、以下のように、出力ファイル(output.xlsx)が出力されることが確認できる。
サンプルプログラムの実行結果_2

3) 作成された出力ファイル(output.xlsx)の内容は以下の通りで、「書込先」シートの1列目(赤枠部分)に、2列目のキーに該当する値が設定されるのが確認できる。
サンプルプログラムの実行結果_3

要点まとめ

  • PythonからExcelファイル(.xlsx形式)を読み書き・操作するためのライブラリにOpenPyXL(オープンパイエクセル)があり、プログラムでExcelファイルの作成、データの読み書き、セルの書式設定(色、罫線など)を実施することができる。
  • 重複するキーに対応する値を一括設定する処理は、OpenPyXLを利用したPythonプログラムで実装できる。