Python(openpyxl)で、エクセルでデータをコピーして別シートに貼り付けるコードをご紹介します。
ぜひ、お試しください。
Excelで別シートにコピー(特定セル①)
以下のコードを実行すると、指定セルを別シートにコピーします。
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」に貼り付けます。
Excelで別シートにコピー(特定セル②)
以下のコードを実行すると、特定セルを別シートにコピーします。
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」に貼り付けます。
Excelで別シートにコピー(特定行)
以下のコードを実行すると、特定の行を別シートにコピーします。
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」に貼り付けます。
Excelで別シートにコピー(複数行)
以下のコードを実行すると、特定の複数行を別シートにコピーします。
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」に転記します。
Excelで別シートにコピー(特定列)
以下のコードを実行すると、特定の列を別シートにコピーします。
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」に貼り付けます。
Excelで別シートにコピー(複数列)
以下のコードを実行すると、複数の特定列を別シートにコピーします。
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」に貼り付けます。
Excelで別シートにコピー(指定範囲)
以下のコードを実行すると、特定範囲のデータを別シートにコピーします。
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】エクセルを自動処理する方法まとめ
「Excel×Python最速仕事術」
Excelの面倒な操作はパソコンにやらせよう
実践的な例題で、業務に即したプログラムを紹介
無駄な残業をするのはもうたくさんな方にオススメの1冊です!