Python(openpyxl) コピーする方法まとめ(行・列・別シート)

Python

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

ぜひ、お試しください。

列をコピーする 2選

列をコピーする(指定列)

以下のコードを実行すると、列の値を複製します。


import openpyxl

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

i = 1

for row in ws.iter_rows():
    for cell in row:
        if cell.col_idx == 1:
            ws.cell(row=i, column=4).value = cell.value
            i = i + 1

#別名で保存
wb.save('C:/Users/xxx/Desktop/test/testコピー.xlsx')

 

A列の値を、D列にコピーします。

[if cell.col_idx == 1:] で、コピー元のA列を指定しています。


 
 

列をコピーする(複数列)

以下のコードを実行すると、複数列の値をコピーします。


import openpyxl

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

#コピーしたい列番号
mylist = [2,3,6]

#貼り付け開始行
i = 1

#貼り付け開始列
j = 8

#配列ループ
for list in mylist:
    #行をループ
    for row in ws.iter_rows():
        #セルをループ
        for cell in row:
            #配列の数値と同じ列番号だったら
            if cell.col_idx == list:
                #列をコピー
                ws.cell(row=i, column=j).value = cell.value
                i = i + 1
    i = 1
    j = j + 1

#別名で保存
wb.save('C:/Users/xxx/Desktop/test/コピー.xlsx')

 

B列・C列・F列の値をコピーして、H列から貼り付けます。

「mylist = [2,3,6]」 で、コピーする列番号を指定します。


 
 

行をコピーする 2選

行をコピーする(指定行)

以下のコードを実行すると、行の値を複製します。


import openpyxl

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

i = 1

for row in ws.iter_rows():
    for cell in row:
        if cell.row == 1:
            ws.cell(row=9, column=i).value = cell.value
            i = i + 1

#別名で保存
wb.save('C:/Users/xxx/Desktop/test/testコピー.xlsx')

 

1行目の値を、9行目にコピーします。

[if cell.row == 1:] で、コピー元の1行目を指定しています。


 
 

行をコピーする(複数行)

以下のコードを実行すると、複数行の値をコピーします。


import openpyxl

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

#コピーしたい行番号
mylist = [2,3,6]

#貼り付け開始行
i = 12

#貼り付け開始列
j = 1

#配列ループ
for list in mylist:
    #行をループ
    for row in ws.iter_rows():
        #セルをループ
        for cell in row:
            #配列の数値と同じ行番号だったら
            if cell.row == list:
                #行をコピー
                ws.cell(row=i, column=j).value = cell.value
                j = j + 1
    j = 1
    i = i + 1

#別名で保存
wb.save('C:/Users/xxx/Desktop/test/コピー.xlsx')

 

2行目・3行目・6行目の値をコピーして、12行目から貼り付けます。

「mylist = [2,3,6]」 で、コピーする行番号を指定します。


 
 

別シートにコピー 7選

 

別シートにコピー(特定セル①)

以下のコードを実行すると、指定セルを別シートにコピーします。


import openpyxl

#エクセルファイルを開く
wb = openpyxl.load_workbook('C:/Users/admin/Desktop/テスト/test.xlsm')

#シートを変数格納
ws1 = wb['Sheet1']
ws2 = wb['Sheet2']

#ws1のセルをws2にコピー
ws2['A1'].value = ws1['B2'].value

#別名で保存
wb.save('C:/Users/admin/Desktop/テスト/testコピー.xlsx')

 

「Sheet1」のセル [B2] をコピーして、「Sheet2」に貼り付けます。


 
 

別シートにコピー(特定セル②)

以下のコードを実行すると、特定セルを別シートにコピーします。


import openpyxl

#エクセルファイルを開く
wb = openpyxl.load_workbook('C:/Users/admin/Desktop/テスト/test.xlsm')

#シートを変数格納
ws1 = wb['Sheet1']
ws2 = wb['Sheet2']

#ws1のセルコピー
copy = ws1.cell(row = 2, column = 2).value
#ws2へ転記
ws2.cell(row = 1, column = 1, value = copy)

#別名で保存
wb.save('C:/Users/admin/Desktop/テスト/testコピー.xlsx')

 

「Sheet1」のセル [B2] をコピーして、「Sheet2」に貼り付けます。


 
 

別シートにコピー(特定行)

以下のコードを実行すると、特定の行を別シートにコピーします。


import openpyxl

#エクセルファイルを開く
wb = openpyxl.load_workbook('C:/Users/admin/Desktop/テスト/test.xlsm')

#シートを変数格納
ws1 = wb['Sheet1']
ws2 = wb['Sheet2']

#コピー開始行
i = 1

#ws1のセルをループ
for row in ws1.iter_rows():
    for cell in row:
        #2行目だったら
        if cell.row == 2:
            #ws1の値をws2に転記
            ws2.cell(row=1, column=i).value = cell.value
            i = i + 1

#別名で保存
wb.save('C:/Users/admin/Desktop/テスト/testコピー.xlsx')

 

「Sheet1」の2行目をコピーして、「Sheet2」に貼り付けます。


 
 

別シートにコピー(複数行)

以下のコードを実行すると、特定の複数行を別シートにコピーします。


import openpyxl

#エクセルファイルを開く
wb = openpyxl.load_workbook('C:/Users/admin/Desktop/テスト/test.xlsx')

#シートを変数格納
ws1 = wb['Sheet1']
ws2 = wb['Sheet2']

#ws1のセルをループ
for row in ws1.iter_rows():

    #行のデータを取得
    cells = [v.value for v in row]

    for cell in row:
        #2行目か4行目だったら
        if cell.row == 2 or cell.row == 4:
            #ws1の値をws2に転記
            ws2.append(cells)
            break

#別名で保存
wb.save('C:/Users/admin/Desktop/テスト/testコピー.xlsx')

 

「Sheet1」の離れた行をコピーして、「Sheet2」に転記します。


 
 

別シートにコピー(特定列)

以下のコードを実行すると、特定の列を別シートにコピーします。


import openpyxl

#エクセルファイルを開く
wb = openpyxl.load_workbook('C:/Users/admin/Desktop/テスト/test.xlsx')

#シートを変数格納
ws1 = wb['Sheet1']
ws2 = wb['Sheet2']

#コピー開始行
i = 1

#ws1のセルをループ
for row in ws1.iter_rows():
    for cell in row:
        #2列目だったら
        if cell.col_idx == 2:
            #ws1の値をws2に転記
            ws2.cell(row=i, column=2).value = cell.value
            i = i + 1

#別名で保存
wb.save('C:/Users/admin/Desktop/テスト/testコピー.xlsx')

 

「Sheet1」の2列目をコピーして、「Sheet2」に貼り付けます。


 
 

別シートにコピー(複数列)

以下のコードを実行すると、複数の特定列を別シートにコピーします。


import openpyxl

#エクセルファイルを開く
wb = openpyxl.load_workbook('C:/Users/admin/Desktop/テスト/test.xlsx')

#シートを変数格納
ws1 = wb['Sheet1']
ws2 = wb['Sheet2']

#転記開始行
i = 0

#コピーする列を変数格納
mylist = [2,4]

#変数をループ
for list in mylist:
    #ws1のセルをループ
    for row in ws1.iter_rows():
        for cell in row:
            #変数と一致する列だったら
            if cell.column == list:

                #1行目だったら
                if cell.row == 1:
                    i = i + 1

                #ws1の該当セルをコピー
                copy = ws1.cell(row = cell.row, column = cell.column).value

                #ws2へ貼り付け
                ws2.cell(row = cell.row, column = i, value = copy)

#別名で保存
wb.save('C:/Users/admin/Desktop/テスト/testコピー.xlsx')

 

「Sheet1」の2列目・4列目をコピーして、「Sheet2」に貼り付けます。


 
 

別シートにコピー(指定範囲)

以下のコードを実行すると、特定範囲のデータを別シートにコピーします。


import openpyxl

#エクセルファイルを開く
wb = openpyxl.load_workbook('C:/Users/admin/Desktop/テスト/test.xlsx')

#シートを変数格納
ws1 = wb['Sheet1']
ws2 = wb['Sheet2']

#ws1のセル範囲をループ
for row in ws1["C2:F10"]:

    #ws1の行のデータを取得
    cells = [v.value for v in row]

    #ws1のデータをws2に転記
    ws2.append(cells)

#別名で保存
wb.save('C:/Users/admin/Desktop/テスト/testコピー.xlsx')

 

「Sheet1」の指定範囲 [“C2:F10”] をコピーして、「Sheet2」に貼り付けます。


 

※条件書式、罫線、背景色は別シートにコピーしません。
 
動作環境
Python 3.7.4
openpyxl 3.0.5

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

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

 

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

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