#目的:B列のフラグが1の行だけを抜き出し、新たなシートに書き出す。
##環境:Python 3.6、openpyexl 2.5.3
##前提:ExcelはA列からM列まで、ブック名はdata.xlsx、シート名はSheet1、新しいシートには4行目から値を入れていく
##制約条件として、列指定のアルファベットをAからアスキーでインクリメントしているため、Z列までしか処理できないことがある。
import openpyxl as op
book = op.load_workbook('data.xlsx') #ブック読み込み
sheet = book['Sheet1']
book.create_sheet(title="new") #新しいシート作成
sheet_new = book["new"]
y = 3 #新しいシートの初期貼り付け行-1
for row_num in range(2, sheet.max_row): # 先頭行をスキップ
Report_flag = sheet.cell(row=row_num, column=2).value #B列の値取り出し
a = []
if Report_flag == 1: #B列の値が1の時
y += 1
"""row_num行の値を取得"""
abc = ord("A") #Aの asciiコード
for i in range(13):
v = sheet[str(chr(abc))+ str(row_num)].value #row_num行の値取得
a.append(v) #リストに追加
abc += 1 #asciiコードインクリメント
"""新しいシートに貼り付け"""
abc = ord("A") #Aの asciiコード
for j in range(13):
sheet_new[str(chr(abc)) + str(y)].value = a[j]
abc += 1 #asciiコードインクリメント
book.save("new.xlsx")
我ながら変数yの処理がいけていない。