from openpyxl import load_workbook import datetime filepath = 'C:\\Users\\matar\\Documents\\book1-1.xlsx' wb = load_workbook(filename=filepath) ws1 = wb['データ'] ws2 = wb['集計'] startdate=datetime.datetime(int(ws2['B2'].value) , int(ws2['C2'].value) , int(ws2['D2'].value)) enddate=datetime.datetime(int(ws2['B3'].value) , int(ws2['C3'].value) , int(ws2['D3'].value)) lastrow1=ws1.max_row lastrow2=ws2.max_row lastcol2=ws2.max_column values1=[[cell.value for cell in row1] for row1 in ws1] for i in range(7, lastrow2+1): for j in range(2, lastcol2+1): counter = 0 for k in range(1, lastrow1): if values1[k][1] == ws2.cell(row=i, column=1).value: if values1[k][2] == ws2.cell(row=6, column=j).value: torihikidate = values1[k][3] if startdate <= torihikidate <= enddate: kingaku=values1[k][4] counter = counter + int(kingaku) if counter is None: counter=0 ws2.cell(row=i, column=j).value = counter newfilepath = 'C:\\Users\\matar\\Documents\\book2-1.xlsx' wb.save(newfilepath)
このプログラムを作りました。こちらのプログラムはExcelからデータをもらい集計して別で作ってあるExcelの表に出力するつもりで作りました。ですがこのプログラムを実行すると下記のようなエラー出ます。このエラーは初めてだったので調べたら関数に関するエラーなようで自分ではもうわかりません。なぜこのようなエラーが出るのか、どう修正すればいいのか教えてほしいです。
エラー
ValueError Traceback (most recent call last)
Input In [4], in <cell line: 10>()
7 ws2 = wb['集計']
9 startdate=datetime.datetime(int(ws2['B2'].value) , int(ws2['C2'].value) , int(ws2['D2'].value))
---> 10 enddate=datetime.datetime(int(ws2['B3'].value) , int(ws2['C3'].value) , int(ws2['D3'].value))
12 lastrow1=ws1.max_row
13 lastrow2=ws2.max_row
ValueError: day is out of range for month
こちらはbook1の読み取るデータです。(左上詰めなのでNoはA1です。)
Excelの乗せ方がわからなかったのでそのままコピペして張りました
A B C D E
No 取引先 担当者 日付 取引金額
1 取引先001 A 2021/11/5 15.973
2 取引先002 B 2021/11/5 -26.354
3 取引先003 C 2021/11/5 16.885
4 取引先004 D 2021/11/5 14.55
5 取引先005 E 2021/11/6 -22.44
6 取引先006 F 2021/11/6 23.554
7 取引先001 B 2021/11/6 19.786
8 取引先002 C 2021/11/6 15.554
9 取引先003 D 2021/11/7 -23.443
10 取引先004 E 2021/11/7 -12.345
11 取引先005 F 2021/11/7 19.89
12 取引先006 A 2021/11/7 24.541
13 取引先001 C 2021/11/8 14.433
14 取引先002 D 2021/11/8 27.322
15 取引先003 E 2021/11/8 -25.323
16 取引先004 F 2021/11/9 27.343
17 取引先005 A 2021/11/9 17.333
18 取引先006 B 2021/11/9 17.456
19 取引先001 D 2021/11/9 27.378
20 取引先002 E 2021/11/9 23.333
21 取引先003 F 2021/11/9 24.332
22 取引先004 A 2021/11/10 12.323
23 取引先005 B 2021/11/10 -19.545
24 取引先006 C 2021/11/10 -20.221
25 取引先001 E 2021/11/10 29.443
26 取引先002 F 2021/11/11 27.337
27 取引先003 A 2021/11/11 20.221
28 取引先004 B 2021/11/11 20.331
29 取引先005 C 2021/11/11 17.339
30 取引先006 D 2021/11/12 26.441
31 取引先001 F 2021/11/12 16.221
32 取引先002 A 2021/11/12 22.011
33 取引先003 B 2021/11/13 13.443
34 取引先004 C 2021/11/13 24.55
35 取引先005 D 2021/11/13 32.445
36 取引先006 E 2021/11/13 29.334
37 取引先001 A 2021/11/13 34.557
38 取引先002 B 2021/11/14 30.005
39 取引先003 C 2021/11/14 -22.19
40 取引先004 D 2021/11/14 -22.489
41 取引先005 E 2021/11/14 -33.901
42 取引先006 F 2021/11/14 11.343
43 取引先001 B 2021/11/14 27.33
44 取引先002 C 2021/11/15 30.492
45 取引先003 D 2021/11/15 25.998
46 取引先004 E 2021/11/15 34.22
47 取引先005 F 2021/11/15 29.339
48 取引先006 A 2021/11/16 27.445
49 取引先001 C 2021/11/16 27.337
50 取引先002 D 2021/11/16 29.331
51 取引先003 E 2021/11/16 -19.332
52 取引先004 F 2021/11/16 20.456
53 取引先005 A 2021/11/16 -12.345
54 取引先006 B 2021/11/16 -9.454
55 取引先001 D 2021/11/16 35.443
56 取引先002 E 2021/11/17 19.321
57 取引先003 F 2021/11/17 -3.44
58 取引先004 A 2021/11/17 19.221
59 取引先005 B 2021/11/17 27.334
60 取引先006 C 2021/11/17 -23.448
61 取引先001 E 2021/11/18 32.33
62 取引先002 F 2021/11/18 32.448
63 取引先003 A 2021/11/18 29.331
64 取引先004 B 2021/11/19 30.1
65 取引先005 C 2021/11/19 10.995
66 取引先006 D 2021/11/19 29.55
67 取引先001 F 2021/11/19 30.521
68 取引先002 A 2021/11/19 18.509
69 取引先003 B 2021/11/20 35.223
70 取引先004 C 2021/11/20 38.401
71 取引先005 D 2021/11/20 26.349
72 取引先006 E 2021/11/20 29.442
73 取引先001 A 2021/11/20 -20.305
74 取引先002 B 2021/11/21 -5.001
75 取引先003 C 2021/11/21 28.409
76 取引先004 D 2021/11/21 -20.101
77 取引先005 E 2021/11/21 35.405
78 取引先006 F 2021/11/21 31.109
79 取引先001 B 2021/11/21 -9.201
80 取引先002 C 2021/11/22 17.398
81 取引先003 D 2021/11/22 24.571
82 取引先004 E 2021/11/23 29.321
83 取引先005 F 2021/11/23 35.001
84 取引先006 A 2021/11/23 32.985
85 取引先001 C 2021/11/23 35.551
86 取引先002 D 2021/11/23 -12.561
87 取引先003 E 2021/11/24 34.111
88 取引先004 F 2021/11/24 18.435
89 取引先005 A 2021/11/24 -31.145
90 取引先006 B 2021/11/24 35.321
91 取引先001 D 2021/11/24 19.892
92 取引先002 E 2021/11/24 28.309
93 取引先003 F 2021/11/24 25.435
94 取引先004 A 2021/11/25 34.221
95 取引先005 B 2021/11/25 29.551
96 取引先006 C 2021/11/25 30.001
97 取引先001 E 2021/11/25 24.334
98 取引先002 F 2021/11/25 27.441
99 取引先003 A 2021/11/25 24.227
100 取引先004 B 2021/11/25 31.117
101 取引先005 C 2021/11/26 14.256
102 取引先006 D 2021/11/26 16.339
103 取引先001 F 2021/11/26 35.551
104 取引先002 A 2021/11/26 29.446
105 取引先003 B 2021/11/27 -23.556
106 取引先004 C 2021/11/27 -22.722
107 取引先005 D 2021/11/27 29.339
108 取引先006 E 2021/11/27 30.445
こちらはデータからもらった値を計算したもの出力して自動で書くつもりの集計(book2)です。(左上詰めなので日付選択はA1で、取引先はA5です。)
A B C D
日付選択 年 月 日
集計開始 2021 11 1
集計終了 2021 11 31
取引先 A B C D E F
取引先001
取引先002
取引先003
取引先004
取引先005
取引先006
A | B | C | D | E | F | G | |
---|---|---|---|---|---|---|---|
5 | 取引先 | A | B | C | D | E | F |
6 | 取引先001 |