実現したいこと
Excelのデータリストから、各条件にあった行を新規シートに抽出したい
発生している問題・分からないこと
エラーメッセージ
error
1エラーはありませんが、結果が違います
該当のソースコード
python
1import openpyxl 2import os 3 4# Excelファイルのパス 5file_path = r"C:\Users\ozawa\Documents\python練習コード.xlsx" 6 7# ファイルの存在を確認 8if not os.path.exists(file_path): 9 print(f"エラー: ファイル '{file_path}' が存在しません。") 10 exit() 11 12try: 13 # 読み込み 14 workbook = openpyxl.load_workbook(file_path) 15 16 # コピー元シートの取得 17 source_sheet = workbook["データ一覧"] # シート名は必要に応じて変更 18 19 # コピー先シートの作成 20 if "抽出結果" not in workbook.sheetnames: 21 target_sheet = workbook.create_sheet("抽出結果") 22 header = [cell.value for cell in source_sheet[1]] # ヘッダー行をコピー 23 target_sheet.append(header) 24 else: 25 target_sheet = workbook["抽出結果"] 26 if target_sheet.max_row == 0: 27 header = [cell.value for cell in source_sheet[1]] 28 target_sheet.append(header) 29 30 31 data9_value = row[10].value # 目的 (11列目) 32 33 # data9が空白の場合に9を設定 34 if data9_value is None or str(data9_value).strip() == "": 35 data9 = 9 36 else: 37 try: 38 data9 = int(data9_value) 39 except ValueError: 40 data9 = 0 # 数値に変換できない場合は0を設定 41 42 data4 = row[4].value # (5列目) 43 data7 = row[8].value # (9列目) 44 45 # 値を数値に変換 (エラー処理付き) 46 data8 = row[9].value # (10列目) 47 48 if data8 is None or str(data8_value).strip() == "": 49 data8 = 9 50 else: 51 try: 52 data8 = int(data8_value) 53 except ValueError: 54 data8 = 0 # 数値に変換できない場合はスキップ 55 56 if data7 is None or str(data7).strip() == "": 57 data7 = 9 58 else: 59 try: 60 data7 = int(data7) 61 except ValueError: 62 data7 = 0 63 64 # 条件に合致する行を抽出 65 if data9 == 1 and data4 == 1 and data7 == 15001 and data9 == 15001: 66 for i, value in enumerate(values): # enumerateを使ってindexを取得 67 target_sheet.cell(row=row_num, column=i + 1).value = value 68 row_num += 1 69 70 # 保存 71 workbook.save(file_path) 72 73 print("抽出とコピーが完了しました。") 74 75except KeyError as e: 76 print(f"エラー: シート '{e}' が存在しません。") 77except Exception as e: 78 print(f"予期せぬエラー: {e}")
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
自分になりにGeminiを使って修正したりして、エラー表示はなくなりましたが、ヘッダーのみしか表示されませんでした
補足
どんなコードであれば、キチンと実行できるのかも知りたいです.
よろしくお願いします
