- ベストアンサー
EXCELの関数について教えてください。
EXCELの関数について教えてください。 A列のセルに「18:00 」or 「18:30」 or「19:00」 or「19:30」と入力するとB列のセルに「8:00」と表示され、「17:30」と入力すると「7:00」と表示される方法を教えてください。 セルの書式の表示形式は「文字列」ではなく「時刻」に設定したいです。 多分IF関数をつかうを使うのではないかと思うのですが、書式が「時刻」のためかうまくいきません。 よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
IF関数をネストすればできます。 =IF(A2="","",IF(A2*24<18,7/24,8/24))
その他の回答 (4)
- grumpy_the_dwarf
- ベストアンサー率48% (1628/3337)
> 「18:00 」or 「18:30」 or「19:00」 or「19:30」と入力すると > B列のセルに「8:00」と表示され、「17:30」と入力すると「7:00」と表示される 実際に仕事に使うなら、以下の点を明確にしましょう。 ・18:00~19:30の任意の時刻で「8:00」を返すのか、上記の特定の時刻だけなのか ・上記の特定の時刻だけの場合、半端な時刻の処理はどうするのか ・17:30より前、17:31~17:59、19:31以降はどうするのか ShadowMoonさんの回答は「18時より小さいときは7時、そうでないときは8時」の条件で とてもすっきりまとめてすばらしいと思います。16時頃でも7時間でいいし20時になっても 8時間のままならこれで完璧でしょう。 さて、私はShadowMoonさんの条件を拡張して、「18時以降は8時間、それ以前は10時から の経過時間」としてみます。16時台だと6時間になるようにして、あいかわらず超過勤務は 認めないわけです。すると、 =IF(A1="","",TIME(MIN(HOUR(A1)-10,8),0,0)) というふうに書けます。いろんなアプローチがあっておもしろいでしょう?
- nek784
- ベストアンサー率35% (145/411)
セルの表示形式を時刻にしている場合は 「18:00」はシリアル値では「0.75」となります。 これを利用してIF分で条件をつけてあげればうまくいくのではないかと いくのですがどうでしょうか。 例) =IF(A2=0.75,"8:00",IF~~)
- ShadowMoon
- ベストアンサー率59% (73/122)
Excelでは24時間を1として扱います。 ご質問はA列のデータが18時より小さいときは7時、そうでないときは8時とB列に表示すると解釈するとB列には下記のような計算式を入力するとよいと思います。 A2に時刻を入力しているとして、B2には =IF(A2*24<18,7/24,8/24) と入力してみてください。
お礼
早速のご回答ありがとうございました。 できました☆ EXCELで24時間を1と考えるなんて全く知りませんでした。まだ何故このような式になるか完全に理解していないので勉強したいと思います。 実は質問に記入していなかった私が悪いのですが、A列のセルが空白の時があるのです。その時も7:00と表示されてしまい・・・A列が空白のときはB列も空白にという風にはならないでしょうか・・・ すいません。
- kumagoro-
- ベストアンサー率57% (36/63)
セルB1に =IF(OR(A1=TIMEVALUE("18:00"),A1=TIMEVALUE("18:30"),A1=TIMEVALUE("19:00"),A1=TIMEVALUE("19:30")),"8:00",IF(A1=TIMEVALUE("17:30"),"7:00","")) と入力してはいかがでしょうか。
お礼
早速のご回答ありがとうございました。 18:00、18:30、19:00、19:30と入力した場合は「8:00」と表示されたのですが、17:30と入力した時は空白になってしまいました。アレンジすれば出来そうな感じですね。 TIMEVALUEという関数は今まで知りませんでした。 勉強不足です。 ありがとうございました。
お礼
回答ありがとうございます。 なるほど!!!ネストすればいいんですね! 今まで単純な関数計算しかしたことはありませんでした。ネストすればより複雑な計算ができますね。 すごく勉強になります! EXCELは結構マスターしていると思っていましたが、まだまだということがわかりました。 ありがとうございます☆