【openpyxl】セルが空白なら特定の値を書き込みする【Python初心者向け】

スポンサードリンク
Python
過去の自分
過去の自分

openpyxlでエクセルファイルを編集しているんだけど、
表の中に空白セルがある…。

やりたいことの見本
過去の自分
過去の自分

これらの空白セル全てに「調査中」という文字を入れたい…。

実現後のイメージ
今の自分
今の自分

なるほど…。
空白を判定して書き込みする必要がありますね!
では今回は、「セルが空白を判定して特定の値を書き込みする方法」
できるだけわかりやすく解説いたします!

著者情報
スポンサードリンク

openpyxlでセルが空白なら特定の値を書き込みする方法

「if」を使って空白を判定します。
まずはわかりやすくするために、1つのセルだけで考えてみましょう。

全コード

ひとまず全コードと実行結果をお見せします。
解説は後ほど行います。

import openpyxl

wb = openpyxl.load_workbook('C:/Utatane/input.xlsx')
ws = wb['Sheet1']

cell = ws['A1']

if cell.value is None:
    cell.value = '調査中'

wb.save('C:/Utatane/output.xlsx')
if cell.value is None:
    cell.value = '調査中'

実行結果

実行結果

事前準備

  • openpyxlのインストール

既存のエクセルファイルを編集するには「openpyxl」のインストールが必要です。

openpyxlのインストール方法

openpyxlを初めて使用する場合は、下記コードを入力・実行して、インストールしてください。

pip install openpyxl

※openpyxlを使用したことがある場合は、このインストール作業は不要です。

インストールに関する詳細や、インストールができなかった場合の対処法は下記記事で解説しております。
また、既存ファイルを開いて保存する方法など、基本解説も行っておりますのでご参考ください。

解説

※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。

インポート~ブック・シートの取得

import openpyxl

wb = openpyxl.load_workbook('C:/Utatane/input.xlsx')
ws = wb['Sheet1']

上記コードにて、エクセル操作に必要な「openpyxl」のインポートと、エクセルブック・シートを取得しています。
詳細は、「インストール方法」の記事をご参考ください。

対象のセルを取得

次に、対象のセルを取得します。
今回はA1セルを取得しています。

cell = ws['A1']

【コードの解説】
新しい名前の変数を書いたら、「=(イコール)」を書きます。

今回はわかりやすく、「cell(セル)」という名前にしましたが、何でも構いません。
しかしながら、つけられない名前があったりしますので、下記記事をご参考ください。

イコールの後ろには、シートが入った変数(今回はws)と[]を書きます。
[]内には、対象のセル名を書いてください。

セル名は「’(クォーテーション)」で囲いましょう。

記事後半の「全ての空白セルに特定の値を書き込みする方法」にて、全セルを取得して書き込みする方法を紹介しております。

空白の判定~値の書き込み

if cell.value is None:
    cell.value = '調査中'

上記コードにて、「空白の判定」と「値の書き込み」を行っております。
空白の判定については、下記記事をご参考ください。

ではプログラムを実行してみましょう。

実行結果

A1セルが空白だったので、「調査中」という文字が書き込みされました。
A1セルに別の値が入っていた場合は、何も処理されません。

空白ではなかった場合の実行見本

今回は、取得したセルの値が空白なら、セルに「調査中」という文字を書き込みしました。
「調査中」以外にも、「0」や「未定」などを書き込みすることもできます。お試しください。

スポンサードリンク

全ての空白セルに特定の値を書き込みする方法

ここからが本番です。
下図を見てください。

やりたいことの見本

空白のセルがいくつかあります。
これらの空白セルに「調査中」という文字を入れたい場合、どうしたらいいでしょうか?
コードを見ていきましょう。

import openpyxl

wb = openpyxl.load_workbook('C:/Utatane/input.xlsx')
ws = wb['Sheet1']

for row in ws.iter_rows():
    for cell in row:
        if cell.value is None:
            cell.value = '調査中'

wb.save('C:/Utatane/output.xlsx')

上記コードを実行することで、全ての空白セルに「調査中」の文字が書き込みされます。

実現後のイメージ

コードはいたってシンプルで、これまで解説した処理を「for文」を使って繰り返しています。
for文については下記記事をご参考ください。

「iter_rows」もよく使うかと思いますので、押さえておきましょう。

スポンサードリンク

うまく動作しない場合の対処法

エラーが出る

No such file or directory: ○○

これは、読み込むファイルやフォルダが見つからないというエラーです。
読み込むファイルのファイル名と構文のファイル名が一致しているか確認しましょう。

詳しい解説は、下記記事をご参考ください。

Permission denied: ○○

操作しようとしているファイルにアクセスできないというエラーです。
ファイルを開いている状態なので編集できない」と言っていることが多いので、開いていれば閉じて再度トライしましょう。

詳しい解説は、下記記事をご参考ください。

Worksheet ○○ does not exist

「指定したシートがありません」というエラーです。
指定のシート名が間違っていないか、「sheet1」など先頭が小文字になっていないか確認しましょう。

詳しい解説は、下記記事をご参考ください。

○○ is not defined

今まで出てきていない変数などを処理しようとした時に出るエラーです。
変数名などが間違っていないかチェックしましょう。

詳しい解説は、下記記事をご参考ください。

その他のエラー

その他のエラーが出た場合は、エラー文をコピーしてNETで検索してみましょう。

スポンサードリンク

最後に

openpyxlでセルが空白なら特定の値を書き込みする方法を解説いたしました。

当ブログでは、Pythonに関する情報を配信しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。

挫折せずにPythonを独学で学習する方法は特におすすめです。

最後までお読みいただき、ありがとうございました。がんばってください!

タイトルとURLをコピーしました