Python(openpyxl) 削除する方法まとめ(シート・行・列・空白行)

Python

Python(openpyxl)で、Excelのシート・行・列を削除する方法をまとめました。用途に合わせた削除方法をコード付きでご紹介します。

ぜひ、お試しください。

列を削除する 3選

列を削除する(指定列)

以下のコードを実行すると、指定列を削除します。


import openpyxl

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

#列を削除
ws.delete_cols(3)

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

 
Excelシート内の指定列を自動削除します。

[ws.delete_cols(3)] は、3列目(C列)を削除します。


 
 

列を削除する(複数列)

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


import openpyxl

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

#列を削除
ws.delete_cols(3,2)

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

 
Excelシート内の複数列を自動削除します。

[ws.delete_cols(3,2)] は、3列目から ”2列分削除” します。


 
 

列を削除する(複数列:for文使用)

以下のコードを実行すると、複数列を一括削除します。


import openpyxl

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

maxCol = 5

for col in reversed(range(2, maxCol)):

    #列を削除
    ws.delete_cols(col)

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

 
Excelシート内の指定列をループして、
2列目~4列目を自動削除します。


 
 

行を削除する 8選

行を削除する(指定行)

以下のコードを実行すると、指定行を削除します。


import openpyxl

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

#行を削除
ws.delete_rows(3)

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

 

Excelシート内の指定行を自動削除します。

[ws.delete_rows(3)] は、3行目を削除します。


 
 

行を削除する(複数行)

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


import openpyxl

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

#複数行を削除
ws.delete_rows(2, 3)

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

 

Excelシート内の複数行を自動削除します。

[ws.delete_rows(2, 3)] は、2行目を起点として ”3行削除” します。


 
 

行を削除する(複数行:for文使用)

以下のコードを実行すると、複数行を一括削除します。


import openpyxl

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

maxRow = 5

for row in reversed(range(2, maxRow)):

    #行を削除
    ws.delete_rows(row)

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

 

Excelシート内の指定行をループして、
2行目~4行目を自動削除します。


 
 

行を削除する(指定行から最終行まで)

以下のコードを実行すると、特定行から最終行まで一括削除します。


import openpyxl

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

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

#削除開始行
stop_row = 6

#最終行から6行目まで逆ループ
for row in reversed(range(stop_row,Sheet_Max)):

    #行を削除
    ws.delete_rows(row)

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

 

Excelシート内の行をループして、
指定行~最後の行まで自動削除します。


 
 

行を削除する(数値が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を実行しています。


 
 

行を削除する(特定文字を含む行削除)

以下のコードを実行すると、セルに特定文字が含まれている行を一括削除します。


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

    #A列に特定の値が含まれていたら
    if 'ぶっかけ' in ws.cell(row=i, column=1).value:

        #行削除
        ws.delete_rows(i)

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

 

Excelシート内で、指定文字が存在する行全体を自動削除します。

[if ‘ぶっかけ’ in ws.cell(row=i, column=1).value:] は、
「ぶっかけ」が含まれているか判定します。


 
 

行を削除する(色付きセルの行削除)

以下のコードを実行すると、色のついているセルがある行を削除します。


import openpyxl
from openpyxl.styles import PatternFill

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 j in range(1,Sheet_Max_Clm + 1):

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

        if i == 0:
            break

        #色付きセルだったら
        if ws.cell(row=i, column=j).fill != PatternFill(fill_type = None):

            #行削除
            ws.delete_rows(i)

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

 

セルの背景色が塗りつぶしてある場合、その行を削除します。

[if ws.cell(row=i, column=j).fill != PatternFill(fill_type = None):] にて、
セルに色がついているかどうか判定します。


 
 
動作環境
Python 3.7.4
openpyxl 3.0.5
 
 

エクセルシートを削除 5選

エクセルシートを削除(特定シート)

以下のコードを実行すると、Excelの特定シートを削除します。


import openpyxl

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

#シートをループ
for ws in wb.worksheets:

    #該当シートを削除
    if ws.title == 'Sheet2':
        wb.remove(ws)

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

 

コード実行後

「if ws.title == ‘Sheet2’:」で指定したシートを、自動削除します。


 
 

エクセルシートを削除(特定シート以外)

以下のコードを実行すると、Excelの特定シート以外を削除します。


import openpyxl

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

#シートをループ
for ws in wb.worksheets:

    #該当シート以外を削除
    if ws.title != 'Sheet2':
        wb.remove(ws)

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

 

コード実行後

「if ws.title != ‘Sheet2’:」で指定したシート以外を、自動削除します。


 
 

エクセルシートを削除(1番左のシート)

以下のコードを実行すると、Excelの1番左側のシートを削除します。


import openpyxl

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

#1番左のシートを削除
wb.remove(wb.worksheets[0])

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

 

コード実行後

左端のシートを自動削除します。


 
 

エクセルシートを削除(1番右のシート)

以下のコードを実行すると、Excelの1番右側のシートを削除します。


import openpyxl

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

#1番右のシートを削除
wb.remove(wb.worksheets[-1])

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

 

コード実行後

右端のシートを自動削除します。


 
 

エクセルシートを削除(複数シート)

以下のコードを実行すると、Excelの複数シートを削除します。


import openpyxl

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

mylist = ['Sheet1','Sheet3']

#配列ループ
for list in mylist:

    #シートをループ
    for ws in wb.worksheets:

        #該当シートを削除
        if ws.title == list:
            wb.remove(ws)

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

 

コード実行後

Excelの複数シートを自動削除します。

「mylist = [‘Sheet1′,’Sheet3’]」で、削除したいシート名を指定します。


 
 
動作環境
Python 3.7.4
openpyxl 3.0.5
 
 

Excelの空白行を削除 2選

Excelの空白行を削除

以下のコードを実行すると、空白セルがある行を一括削除します。


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(1,Sheet_Max)):

    #A列が None だったら
    if ws.cell(row=i, column=1).value == None:

        #行削除
        ws.delete_rows(i)

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

 

コード実行後

Excelシート内で、空白行を自動削除します。

[if ws.cell(row=i, column=1).value == None:] は、セルの値が空白かどうか判定します。

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

見た目は空白でも、空白スペースが入っているセルは削除されません。


 
 

Excelの空白行を削除(空白スペースを判定)

以下のコードを実行すると、空白行をまとめて削除します。


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(1,Sheet_Max)):

    GetValue1 = ws.cell(row=i, column=1).value

    #A列が None だったら
    if GetValue1 == None:
        #行削除
        ws.delete_rows(i)
    else:
        #A列の空白文字を削除
        GetValue2 = GetValue1.strip()

        #セルの文字数が 0 だったら
        if len(GetValue2) == 0:
            #行削除
            ws.delete_rows(i)

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

 

コード実行後

A列が空白のセルについて行を削除します。

空白スペースが入っているセルについても行削除します。

 
動作環境
Python 3.7.4
openpyxl 3.0.5

この記事がお役に立ちますと幸いです。
 
・【Python】エクセルを自動処理する方法まとめ
 

【Python】エクセル処理を自動化:超便利55選
Pythonで、Excel処理を自動化するコードをご紹介します。ぜひお試しください!

 

「PythonでExcel、メール、Webを自動化する本」

準備に時間をかけず、すぐ始められます
実践的な例題で、実務で本当に使えるプログラムを紹介
自分の仕事を効率化したい方に大きな武器になるオススメの1冊です!