回答編集履歴
2
コメントの質問に対する回答の追記
answer
CHANGED
@@ -66,4 +66,24 @@
|
|
66
66
|
print(f"エラー: シート '{e}' が存在しません。")
|
67
67
|
except Exception as e:
|
68
68
|
print(f"予期せぬエラー: {e}")
|
69
|
-
```
|
69
|
+
```
|
70
|
+
(コメントの質問に対する追記)
|
71
|
+
```
|
72
|
+
if (row[3].value == 1 and
|
73
|
+
(row[6].value == 10 or
|
74
|
+
row[6].value == 11 or
|
75
|
+
row[6].value == 12) and
|
76
|
+
20000 <= row[7].value and
|
77
|
+
row[7].value <= 20100 and
|
78
|
+
row[8].value == 1):
|
79
|
+
```
|
80
|
+
か
|
81
|
+
```
|
82
|
+
if (row[3].value == 1 and
|
83
|
+
10 <= row[6].value and
|
84
|
+
row[6].value <= 12 and
|
85
|
+
20000 <= row[7].value and
|
86
|
+
row[7].value <= 20100 and
|
87
|
+
row[8].value == 1):
|
88
|
+
```
|
89
|
+
で。質問の意味が違っていたら、コメントしてください。
|
1
回答の追記
answer
CHANGED
@@ -3,4 +3,67 @@
|
|
3
3
|
- target_sheet.max_rowは1開始なので、26行目以降のif文が実行されていません。
|
4
4
|
- そのif文の中で、row、data8_value、values、row_numが未定義(値が無い)です。
|
5
5
|
|
6
|
-
上記を見直してみてください。
|
6
|
+
上記を見直してみてください。
|
7
|
+
(追記)
|
8
|
+
作ってみました。
|
9
|
+
```
|
10
|
+
import openpyxl
|
11
|
+
import os
|
12
|
+
|
13
|
+
# Excelファイルのパス
|
14
|
+
file_path = r"C:\Users\ozawa\Documents\python練習コード.xlsx"
|
15
|
+
|
16
|
+
# ファイルの存在を確認
|
17
|
+
if not os.path.exists(file_path):
|
18
|
+
print(f"エラー: ファイル '{file_path}' が存在しません。")
|
19
|
+
exit()
|
20
|
+
|
21
|
+
try:
|
22
|
+
# 読み込み
|
23
|
+
workbook = openpyxl.load_workbook(file_path)
|
24
|
+
|
25
|
+
# コピー元シートの取得
|
26
|
+
source_sheet = workbook["データ一覧"] # シート名は必要に応じて変更
|
27
|
+
|
28
|
+
# コピー先シートの作成
|
29
|
+
if "抽出結果" not in workbook.sheetnames:
|
30
|
+
target_sheet = workbook.create_sheet("抽出結果")
|
31
|
+
header = [cell.value for cell in source_sheet[1]] # ヘッダー行をコピー
|
32
|
+
target_sheet.append(header)
|
33
|
+
|
34
|
+
# 変更ここから
|
35
|
+
target_sheet = workbook["抽出結果"]
|
36
|
+
|
37
|
+
# コピー元シートの読み取り
|
38
|
+
it = source_sheet.iter_rows(min_row = 2, min_col = 2)
|
39
|
+
|
40
|
+
# 条件に合う行をコピー先シートにコピー
|
41
|
+
for row in it:
|
42
|
+
# データ4→1
|
43
|
+
# データ7→10
|
44
|
+
# データ8→20000~20100
|
45
|
+
# データ9→1
|
46
|
+
if (row[3].value == 1 and
|
47
|
+
row[6].value == 10 and
|
48
|
+
20000 <= row[7].value and
|
49
|
+
row[7].value <= 20100 and
|
50
|
+
row[8].value == 1):
|
51
|
+
|
52
|
+
# コピー先の行インデックス
|
53
|
+
i = target_sheet.max_row + 1
|
54
|
+
|
55
|
+
# コピー
|
56
|
+
for cell in row:
|
57
|
+
target_sheet.cell(row = i, column = cell.col_idx).value = cell.value
|
58
|
+
# 変更ここまで
|
59
|
+
|
60
|
+
# 保存
|
61
|
+
workbook.save(file_path)
|
62
|
+
|
63
|
+
print("抽出とコピーが完了しました。")
|
64
|
+
|
65
|
+
except KeyError as e:
|
66
|
+
print(f"エラー: シート '{e}' が存在しません。")
|
67
|
+
except Exception as e:
|
68
|
+
print(f"予期せぬエラー: {e}")
|
69
|
+
```
|