• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル関数で時間範囲)

エクセル関数で時間範囲をふりわける方法

このQ&Aのポイント
  • エクセル2013を使用している場合、特定の時間範囲に応じて異なる結果を出力する条件を付ける方法について教えてください。
  • 土・日・祝の特定日の6:00から18:00までの時間が入力されればAさん、土・日・祝の特定日の18:00から翌日の6:00までの時間が入力されればBさん、平日の6:00から18:00までの時間が入力されればCさん、それ以外の時間が入力されればDさん、というように条件を付けることは可能でしょうか?
  • また、6:00から18:00までAさんとCさんとふりわける方法についても教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.6

度々の誤りをお詫び致します。 回答No.4の貼付画像に誤りがありましたので代わりの画像を貼付します。 尚、貼付画像中の C1<"18:00"*1 の判定は回答No.3の数式では C1+(C1<"6:00"*1)<"18:00"*1 のようにしてありますので、翌日の 0:00 以降の時刻については 24:00 ~ 29:59 として評価されるようになっています。

その他の回答 (5)

  • m_and_dmp
  • ベストアンサー率54% (987/1817)
回答No.5

いろいろなアプローチがありますので、ひとつのアイディアとして参考にしてください。 C1 に18:00 と入力すると、表示形式が自動的に「時刻」に変わり、18:00 と表示されますが、この値は数値としてみるなら、0.75 (=18/24) です。 これを「年月日時刻」形式で表示させると、1900/1/0 18:00 となります。 C1 に6:00 と入力した場合は、それぞれ、0.25 (=6/24)、1900/1/0 6:00 になります。 C1に入力した値が翌日の6:00 であるか、同日の6:00 なのか区別できません。 これではIF 関数で計算ができません。IF 文を考える前に、入力値を規定する必要があります。 たとえば、 C1 に「年月日時刻」で入力します。(たとえば、15/4/27 6:00 ) 2015/4/27 6:00 と、年月日を含めて表示されますが、時刻だけ表示したければ、表示形式をhh:mm に設定します。 参考<この値をIF 関数でそのまま使うのはやっかいなので> 入力値の「日」を取り出すには、 =DAY(C1) ・・・ 27 と表示される。 時刻を取り出すには、 =HOUR(C1)+MINUTE(C1)/60 ・・・ 6.5 と表示される。

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.4

回答No.3の貼付画像の矢印線が不適切な状態でしたので改めて貼付します。 尚、回答No.3の数式で補足説明が必要なところがありましたら「補足」の投稿で追加質問してください。

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.3

>土・日・祝の特定日の6:00から18:00までの時間が入力されればAさん、 >土・日・祝の特定日の18:00から翌日の6:00までの時間が入力されればBさん、 >平日の6:00から18:00までの時間が入力されればCさん、 >それ以外の時間が入力されればDさん、というように条件を付けることは可能でしょうか? 可能です。 >6:00から18:00までAさんとCさん、とか幾つか段階を踏んでふりわけたほうが良いでしょうか? 土・日・祝祭日と時間帯を区分して振り分ける必要があるでしょう。 貼付画像のようなフローチャートに沿って数式を組み立てれば良いでしょう。 B1セルに日付を入力します。 B11~B27セルに2015年の祝祭日の日付が記載されているものとします。 =IF(OR(WEEKDAY(B1,2)>5,COUNTIF(B11:B27,B1)),IF(C1+(C1<"6:00"*1)<"18:00"*1,"A","B"),IF(C1+(C1<"6:00"*1)<"18:00"*1,"C","D")) 尚、時刻を表す文字列("6:00"や"18:00")に1を乗じて時刻のシリアル値に変換しています。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 確認したいのですが、土・日・祝の18:00が入力された場合や、土曜日の6:00が入力された場合には、それらの時間はAさんの時間帯とBさんの時間帯の両方に属する時刻になりますが、それぞれどちらの名前を表示させれば良いのでしょうか?  同様に月曜日や、祝日の翌日の6:00はBさんとCさんが重なりますし、月~金の18:00にはCさんとDさんが、土曜日や祝日の6:00はDさんとAさんが重なります。

回答No.1

>土・日・祝の特定日の6:00から18:00までの時間が入力されればAさん、 これは (今日が土曜 または(OR) 日曜 または(OR) 祝日) かつ(AND) 時間が6時以降 かつ(AND) 時間が18時未満 です。これを「A条件」とします。 「6時以降」は「6時ぴったりを含む」と言う事です。 「18時未満」と言う事に特に注意して下さい。 >土・日・祝の特定日の18:00から翌日の6:00までの時間が入力されればBさん、 これは {(今日が土曜 または(OR) 日曜 または(OR) 祝日) かつ(AND) 時間が18時以降} または(OR) {(今日が日曜 または(OR) 月曜 または(OR) 祝日の翌日) かつ(AND) 時間が6時未満 } です。これを「B条件」とします。 「18時以降」は「18時ぴったりを含む」と言う事です。 「6時未満」と言う事に特に注意して下さい。 ここで注意して欲しいのは「6時ぴったり」や「18時ぴったり」の扱いです。 「以降はピッタリを含む」と「未満はピッタリを含まない」と言う条件により「AさんもBさんも、両方とも成り立ってしまう」と言うのを防いでいます。 >平日の6:00から18:00までの時間が入力されればCさん、 これは Aさんの条件が成り立たない時(A条件が偽の時) かつ Bさんの条件が成り立たない時(B条件が偽の時) と言う場合のみ判定すれば良く (時間が6時以降 かつ(AND) 時間が18時未満) です。これを「C条件」とします。 C条件の評価時は「平日しか行なわれない」ので、曜日などはチェックしません。 >それ以外の時間が入力されればDさん、 これは Aさんの条件が成り立たない時(A条件が偽の時) に Bさんの条件が成り立たない時(B条件が偽の時) に Cさんの条件が成り立たない時(C条件が偽の時) です。 C条件を評価して偽になれば、Dさんに決定です。 まとめると =IF(A条件,"A",IF(B条件,"B",IF(C条件,"C","D"))) となります。 A条件、B条件、C条件を式にして、上記のIF文に組み込めば良いです。 翌日を跨ぐ部分の 「土・日・祝の特定日の18:00から翌日の6:00まで」 を 「土・日・祝の特定日の18:00~23:59、または、日・月・祝の翌日の0:00~5:59」 と考えると「翌日を跨ぐとか考える必要が無くなる」ので、工夫しましょう。 また「祝日の翌日かどうか」は「今日の日付から1を引いてから、1を引いたのが祝日かどうか」を判定すれば良いので、結局は「指定した日が祝日かどうか」さえ判る式を書けば良いです。 ここまで説明すれば、あとは「上記の説明を、式に書くだけ」なので、完成したも同然です。

関連するQ&A