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

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

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

多くのプログラミング言語におけるDateTimeオブジェクトは、日付と時間に関する演算と出力を行います。

Python

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

Q&A

解決済

2回答

1781閲覧

日付どうしの比較をしようとしてエラーになってしまいます。

flowers04

総合スコア5

DateTime

多くのプログラミング言語におけるDateTimeオブジェクトは、日付と時間に関する演算と出力を行います。

Python

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

0グッド

0クリップ

投稿2019/09/13 16:03

初めて質問します。始めて間もないので、質問の仕方もよくわかりませんが、アドバイスをいただけると助かります。エクセルデータを読み込み、給与計算するシステムをつくりたいのですが、途中からエラーメッセージが出て進まなくなりました。

☆エラーメッセージ

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]

#集計

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=values1[k][1]               #全体の期間
if startdate<=kandadate<=enddate:          #集計する期間
workingtime=values1[k][19]            #労働時間
counter=counter+float(workingtime)

value1には、日付がyyyy/mm/dd のような書式で日付が入力されています。
これと startdate enddate の型が違うのだろうと思うのですが、自分なりにいじってみてもエラーになってしまいます。よろしくお願いします。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2019/09/13 17:32 編集

コードを掲載する場合は、コードを表示されるツールがあるので、使用してください。 (コードブロック) 初めての質問とありましたが、当サイトの質問の仕方などは記載してますので、そちらを確認してから質問してみてはいかがでしょう?
flowers04

2019/09/16 20:25

アドバイスありがとうございます。
Orlofsky

2019/09/16 20:46

質問は修正できます。
flowers04

2019/09/17 16:38

質問の修正の件ですが、編集できることに気づかなかったので、また新たに質問を送ってしまいました。今回の件は解決済みです。
guest

回答2

0

ベストアンサー

TypeError: '<=' not supported between instances of 'datetime.datetime' and 'NoneType'

空白セルがあって、kandadateがNoneになっているのでは?
事前にif kandadate is not None:などチェックしたほうが良いのではないでしょうか?

投稿2019/09/13 22:40

nomuken

総合スコア1627

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

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

flowers04

2019/09/16 20:24

ありがとうございました。調べてみたらエクセルのフォーマットに問題があり、空白の行がありました。問題なく処理できました。
guest

0

複合条件 の書き方を参考に。

投稿2019/09/13 21:46

Orlofsky

総合スコア16415

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

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

flowers04

2019/09/16 20:23

ありがとうございます。併せていろいろ参考にしてみました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問