【Python】数値が0の行を削除する:openpyxlの基本テクニック

Python_数値が0の行を削除_アイキャッチ Python

Pythonで、エクセルの数値が0の行を削除するコードをご紹介します。

ぜひ、お試しください。

数値が0の行を削除する

以下のコードを実行すると、数値が0の行を全削除します。


import openpyxl

wb = openpyxl.load_workbook('C:/Users/xxx/Desktop/test/test.xlsx')
ws = wb['Sheet1']

#シートの最終行を取得
Sheet_Max = ws.max_row +1

#最終行から逆ループ
for i in reversed(range(Sheet_Max)):

    if i == 0:
        break

    #B列が0だったら
    if ws.cell(row=i, column=2).value == 0:

        #行削除
        ws.delete_rows(i)

#別名で保存
wb.save('C:/Users/xxx/Desktop/test/test行削除.xlsx')

 

コード実行後

Excelシート内で、値がゼロの行を自動削除します。

[if ws.cell(row=i, column=2).value == 0:] は、セルの値が「0」かどうか判定します。

[ws.delete_rows(i)] は、該当の行を削除します。


 
 

数値が0の行を削除する(複数セルを判定)

以下のコードを実行すると、数値が0の行を一気に削除します。


import openpyxl

wb = openpyxl.load_workbook('C:/Users/xxx/Desktop/test/test.xlsx')
ws = wb['Sheet1']

#シートの最終行を取得
Sheet_Max_Row = ws.max_row

#シートの最終列を取得
Sheet_Max_Clm = ws.max_column

#行を逆ループ
for i in reversed(range(Sheet_Max_Row + 1)):

    if i == 0:
        break

    # 列をループ
    for j in range(2,Sheet_Max_Clm + 1):

        #値が0だったら
        if ws.cell(row=i, column=j).value == 0:
            if j == Sheet_Max_Clm:
                #行を削除
                ws.delete_rows(i)
            else:
                continue
        #値が0じゃなかったら
        else:
            break

#別名で保存
wb.save('C:/Users/xxx/Desktop/test/test行削除.xlsx')

 

コード実行後

B~F 列の値がすべてゼロの行をまとめて削除しました。

下図ではプログラム実行結果が分かりやすいように、

「0」のセルに色付けしてから、プログラムを動作させています。

 
参考になりましたら、幸いです。
 

【Python】エクセル処理を自動化:超便利42選
...

 

「Python 1年生 体験してわかる!会話でまなべる!」

初めての方でも安心して取り組めるように丁寧に解説
簡単なサンプルを作りながら、対話形式でプログラミングまで紹介
人工知能の導入としてもオススメの1冊です!