下記プログラム内容ですが、コピー先ブックを開いた後に、別ブックの行を上から順番にfor文で回し、一行目の値を抽出したらその値をコピー先ブックへ貼付けし、上書き保存するということをしたいと考えています。コピー元の値はあくまで、一行ずつで、一行コピー貼付け、保存、次のブックを開いて、先ほどコピーした次の行を、コピー貼付け、保存・・・という流れを作成したいです。
私が考えた内容だと、コピー元の行の値をすべて拾ってきて、各ファイルに貼付けするような結果しか得られませんでした。if文を使用して条件指定をし、ファイルを開くたび、行を指定したいのですが、どのようにしていいかわかりません。
このように記述すると、for文で読んできた番号の行のみを出力することはわかりましたが、このif b != 4:の数字の4の部分をfor b in range(4,Sheet_Max2,1):このfor文で値をとってくるたび同じように数字を4,5,6,7・・・と増やしていければいいのかと思い色々試行錯誤して実行しましたが結局自分ではできませんでした。
for b in range(4,Sheet_Max2,1):
if b != 4:
break
お手数おかけしますが、どのようにしたらいいかご教授お願いいたします。
Python
1#コピー先ファイル一つずつ開く 2for key, value in so_dict2.items(): 3 for v in value: 4 wb = openpyxl.load_workbook(f'C:\テスト用\個別表2\{key}\{v}.xlsx') 5 ws = wb[sheet_name]#コピー先シート取得 6 Sheet_Max2 = ws1.max_row#シートの最終行を取得する コピー元シート 7 #コピー元ファイルの列行を取得する 8 for b in range(4,Sheet_Max2,1): 9 if ws1.cell(row=b, column=3).value is None: 10 break 11 Sheet_Max1 = ws.max_row#シート最終行を取得 コピー先シート 12 for a in range(Sheet_Max1, 0, -1): 13 if ws.cell(row=a, column=2).value is not None: 14 ws.cell(row=a+1,column=2).value = ('料金') 15 kensin = ws1.cell(row=b,column=3).value#セルコピー 16 ws.cell(row=a+1,column=3,value=kensin)#セル貼付け 17 break 18 wb.save(f'C:\テスト用\個別表2\{key}\{v}.xlsx')#上書き保存
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/10/10 05:11