見出し画像

1月12日 Python学習日記 1日1プログラム! Excel自動化 2-6 複数のシートをまとめる

こんばんは。

未経験からPythonでExcel作業の自動化プログラムを学び始めて6カ月の
かおりです。

今日は、「 PythonでExcel、メール、Webを自動化する本 」より、

「2-6 複数のシートをまとめる」 を実践しました💪 

〇複数のシートのコピー

1シートごとに入力されている4月~6月の売上を1つにまとめて別名のブックを保存する = 第1四半期分の1つのシートにまとめる

1つ目のシートはヘッダーを含めて読み込む

次のコードでは、row_listという空のリストを作成しておき、この中に3つのシートの行を順次追加していく

そして、row_listのデータを、新しく作成したシート「第一四半期売上」に1行ずつappend()で追加して、最後に別名で保存する

また、is_first_sheetという「1つ目のシートかどうか」を記録する変数を用意する(6行目)

最初はTrueを代入しておき、1つ目のシートのループが完了したらFalseに切り替える(28行目)

そして、is_first_sheetがTrueの場合には「1」行目から、Falseの場合は「4」行目からシートを読み込む


import openpyxl
wb = openpyxl.load_workbook("売上データ_6月入力.xlsx")
# 1つ目のシートかどうか
is_first_sheet = True
# このリストに全シートから読み取ったデータをまとめる
row_list = []
# ブックの中のすべてのシートを処理
for ws in wb.worksheets:
   if is_first_sheet:
       start_row = 1
   else:
       start_row = 4
   for row in ws.iter_rows(min_row=start_row):
       # ヘッダーより下で空行になったら読み込み終了
       if row[0].row > 3 and row[0].value is None:
           break
       value_list = []
       for c in row:
           value_list.append(c.value)
       row_list.append(value_list)
   is_first_sheet = False
# データを転記する新しいシート
ws_new = wb.create_sheet(title="第1四半期売上")
# 書き込み時の行番号
row_num = 1
# 新しいシートに1行ずつデータを書き込む
for row in row_list:
   # 1行分のデータを書き込む
   ws_new.append(row)
   # データ部分のA列に日付の表示形式を設定し、F列の数式を書き換え
   if row_num > 3:
       ws_new.cell(row_num, 1).number_format = "yyyy/m/d"
       ws_new.cell(row_num, 6).value = "=D" + str(row_num) + "*E" + str(row_num)
   row_num = row_num + 1
# 別名でブック保存
wb.save("売上データ_第1四半期売上.xlsx")

実行結果:

画像1

Pythonのメリットの一つに、動くプログラムを実際に体験するまでのスピードが速いことが挙げられると思います。プログラミング学習のモチベーションが高まりますよ!プログラミング初心者の方にはぜひ、PythonでのExcel作業の自動化から体験してみて欲しいです!!

本日のエラー : なし

本日もおつかれさまでした(^^♪

最後までお読み頂きありがとうございました!時間は有限です。ほんのちょっとでもあなたの背中を押せるお手伝いができていたら嬉しいです。「スキ」ボタンを励みに、もっとあなたを応援できるように頑張ります💛