メッセージをいただきありがとうございます。記法を変えて再度質問します。
アドバイスをいただけると助かります。エクセルデータを読み込み、給与計算するシステムをつくりたいのですが、途中からエラーメッセージが出て進まなくなりました。
エラーメッセージ
if startdate<=kandadate<=enddate: TypeError: '<=' not supported between instances of 'datetime.datetime' and 'NoneType'
python3.7.4、openpyxlを使っています。
コードは以下の通りです。
WS1にある労働時間をWS2の担当者ごとに集計します。
- WS2のセルより日付の取得(B2年、C2月、D2日 から B3年、C3月、D3日 まで)
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
- WS1のエクセルデータ(担当者名と労働時間、その他)を2次元データとして取得する
values1=[[cell.value for cell in row1]for row1 in ws1]
- WS1とWS2の担当者名が一致する行を指定する
for i in range(7,lastrow2+1): for j in range(2,lastcol2+1): counter=0 for k in range(2,lastrow1): if values1[k][0]==ws2.cell(row=i,column=1).value: ``` - 全体の期間をkandadateとする ```ここに言語を入力 kandadate=values1[k][1] ``` - 集計する期間のみを抽出する ```ここに言語を入力 if startdate<=kandadate<=enddate: ``` - 該当する担当者の労働時間を加算する ```ここに言語を入力 workingtime=values1[k][19] counter=counter+float(workingtime)
value1には、日付がyyyy/mm/dd のような書式で日付が入力されています。
これと startdate enddate の型が違うのだろうと察してはいるのですが、自分なりにいじってみてもエラーになってしまいます。よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー