質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

2回答

915閲覧

PythonでValueErrorの対処法

masayan0617

総合スコア13

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2022/06/08 05:12

編集2022/06/08 14:27
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

ABCDEFG
5取引先ABCDEF
6取引先001

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

can110

2022/06/08 05:32

エラー発生時にstartdateに渡しているws2['B2']、ws2['C2']、ws2['D2']の値を提示ください。
tatsu99

2022/06/08 05:59

集計シートのレイアウト及びその内容も提示していただけませんでしょうか。
tatsu99

2022/06/08 08:57

Book2のシート名は、何でしょうか。 Book2の下のシートは、出力項目は、取引先だけですか。
masayan0617

2022/06/08 14:17

ws2[B2 = 2021,C2 = 11,D2 = 1]です
masayan0617

2022/06/08 14:30

シート名はbook1はデータ、book2は集計にしています
guest

回答2

0

集計終了 2021 11 31

一般的に、11月は30日までです。

  • データを直す
  • ValueErrorが発生したらint(ws2['C3'].value)から1ずつ減らして試してみる

などの対処が必要でしょう。

投稿2022/06/08 06:32

int32_t

総合スコア20856

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

エラーメッセージでは、月の項目が範囲外だ、といってます。
そこんところ、どういう値なのかを調べてみよう

#ついでに、その月の項目の指定範囲も調べてみよう

投稿2022/06/08 05:48

y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2022/06/08 07:19

> ValueError: day is out of range for month 「月の項目」ではなく「月における日の範囲」です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問