- ベストアンサー
if関数で20分以上経過にしるしをつけたい方法
- エクセル2003でif関数を使用して20分以上経過にしるしをつけたい場合、時間の大小比較がうまく働かないため、別の関数を使用する必要があります。
- B1~AF1に各月1~31日の休憩時間を入力し、B2には遵守しているかの欄にします。if関数を使用して、20分を超える場合は「×」、そうでなければ「○」とB2~AF2に表示します。
- しかし、時間の大小比較ができないため、直接時間を入力したり、セルの書式を変更したりしてもうまくいかないことがあります。別の関数を使用して時間の比較を行うか、セルの書式を変えずに条件式を改良する必要があります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>A2には基準値として :20:00 を入力しました。 まず基本事項として,「:20:00」や「:01:01」といった時刻の記入の仕方はありません。 時刻や時間数を記入するときは,「0:20」(ゼロ時間20分)や「0:01:00」(ゼロ時間1分00秒)のように記入します。 手順: A2の書式設定を時刻にする A2に改めて 0:20 (20分のことです) あるいは 1:00 (60分のことです。もちろん) を記入する 1行目を時刻の書式設定にする B1に 0:10 を必ず改めて記入する B2に =IF(B1>$A2,"×","○") と式を記入し,どっちが大きければ○や×なのか再確認してから結果を確認する。 さらに 1行目に元の数式を記入し,値を参照してくる その状態で1行目のセルの書式設定を「標準」に戻し,「正しい時間の数値」がキチンと計算されているか再確認する #時間の数字とは たとえば0:20と記入したセルに「標準」の書式設定を付け直すと 0.013888889 という値が現れます。これが正しい時間の数値です。 もしもこの操作をしたときに関数の表示が例えば「:20:00」などのように現れたとしたら,計算式で参照した元のデータから間違っていますので,元からキチンと直します。 正しく時刻の値で引っ張ってこれていることが確認できたら,1行目を時間の表示に設定し直します。
その他の回答 (1)
- KURUMITO
- ベストアンサー率42% (1835/4283)
二つの大きな間違いをしていますね。 1つは時間を入力する場合には20分でしたら0:20:00のように入力することです。お示しの場合は:20:00のように入力していますがそれではパソコンでは時間として認識していません。時間はパソコンでは数値として認識されなければなりませんが:20:00のような入力では文字列として認識されて、その後に表示形式を変えるといった操作をしても全く意味がありません。 二つにはIF関数の式でif(B2>A2,"×","○") とB2セルに入力していますが、B2セルに入力するのにB2を式に入れることはできません。=IF(B$1>$A2,"×","○")の間違いでしょう。 Aに$を付けているのはB2セルに入力した式を横方向にオートフィルドラッグしても$A2の表示が変わらないようにするためです。B$1としているのは下の方向にオートフィルドラッグ操作をしてもB$1が変わらないようにするためです。 ところでどうしても現在のままのデータでお望みのようなことをしたいということでしたらB2セルには次の式を入力して右横方向にオートフィルドラッグします。 =IF(OR(B$1="",$A2=""),"",IF(TIMEVALUE(0&B$1)>TIMEVALUE(0&$A2),"×","○"))
お礼
回答ありがとうございます。 #1の方にも書いたのですが、 実は最初「20:00」で試したのですがうまく反応せず、 B1~にてvlookup関数がひっぱってきた数値が「:20:00」のような表記だったので、 「:20:00」という表記でないのが間違いなのかと思っていました あとご指摘のとおり、B2にいれた式は。=IF(B1>$A2,"×","○")です。 このサイトで記載する時に間違いました。質問をややこしくしてすみません。 最後に書いていただいた式で一度試してみたいと思います。ありがとうございました。
お礼
回答ありがとうございました。 1ステップずつ修正方法を記載いただきありがとうございました。 実は最初「20:00」で試したのですがうまく反応せず、 B1~にてvlookup関数がひっぱってきた数値が「:20:00」のような表記だったので、 「:20:00」という表記でないのが間違いなのかと思っていました もう一度最初からご指摘の方法で修正してみます。 ありがとうございました。