プロが教える店舗&オフィスのセキュリティ対策術

IF関数について、教えてください。

添付図のような使用期間を入力すると、表(カレンダー)に「使用」と表示させる関数を作成中です。

1日単位の使用期間は、こちらで教えていただいた下の数式で実現できました(その節はお世話になりました)が、1日を 午前/午後/夜間 と3分割した時の使用期間を表示させたい場合は、IF関数で実現は可能なのでしょうか? 
分かる方がいらっしゃったら、是非ご教示の程宜しくお願い致します。

=IF((H2<>"")*SUMPRODUCT(($B$3:$B$99<=H2)*($D$3:$D$99>=H2)),"使用","")

「時間範囲(午前/午後/夜間)のIF関数に」の質問画像
教えて!goo グレード

A 回答 (2件)

No1です



>こちらの知識不足で、どのように数式にすれば良いのか分かりません。
ブラックボックスが欲しいのなら別ですが、わからないならわかるようにした方が宜しいかと。

セルの書式を「標準」にしてみればわかりますが、日付のシリアル値は、実態は数値です。
(例えば、2022/1/1 であれば 44562 となります)
日付1日分が1に相当し、1/24が1時間に相当する仕組みになっています。
ご提示の式は、この数値の大小を比較して「該当するか否か」を判断していることになります。

午前、午後、夜間を分けて示したければ、それに関する判定をさらに追加しても良いのですが、複雑になるばかりなので、元の方法をそのまま利用する方が簡単です。
そのために、午前、午後、夜間を適当な時間に換算して(=少数以下の数値にして)、日付に加算すれば「時刻込みの日付」として評価できますので、比較する値をこれに代えれば式の構造はそのまま利用できるということです。

わかりやすくするために、段階的に計算する方法を考えてみれば・・
添付図では、午前、午後、夜間を0.2、0.4、0.6に換算することにして、G、H列に一旦加算した結果を求めています。
(書式を「標準」にしてありますので、44562.2 などの数値表示になっています)
ちなみに、G3セルは、=B3+MATCH(C3,$J$3:$J$5,0)/5 としてあります。

開始時刻(=BC列)、終了時刻(=EF列)の代わりに、G、H列を利用することで、ほぼそのまま元の式を利用できることがおわかりになると思います。
(G,H列を表示したくなければ、非表示にしておくか、ずっと右の方の列を利用するなどでも可能です)


一方で、中間のG,H列を用いなくても、式中に反映することで直接算出することも可能です。
添付図のK列以降では、G,H列を利用せずに直接求めています。
こちらの場合は、式が長く視認性も悪くなるので、十分理解していないと将来的にメンテナンスなどもできなくなる可能性がありますので、理解の上利用なさった方が宜しいでしょう。
「時間範囲(午前/午後/夜間)のIF関数に」の回答画像2
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。
説明が分かりやすく非常に助かります。
後者の方法(式中に反映)にチャレンジしてました。。
アドバイスありがとうございます。

お礼日時:2022/01/20 13:17

こんばんは



「午前/午後/夜間」を適当な時間に換算して、日付に加算して、「日付 時刻」のシリアル値を比較するようにすれば、そのままご提示の式を利用できると思われます。

例えば、午前を0.1、午後を0.2、夜間を0.3とするなど。
(数値は計算上の仮の決めごとなので、0.2、0.4、0.6でも良いですし、0.3、0.6、0.9でもかまいません。)

G3:G5に固定的に「午前~夜間」の文字があるのならそれを利用して、例えばC3セルの評価を
 MATCH(C3,$G$3:$G$5,0)/10
等とすれば、0.1、0.2、0.3に換算が可能です。
(もちろん、他の方法でもかまいません)
    • good
    • 1
この回答へのお礼

前回の質問より引き続き、ご回答ありがとうございます。
ただ「日付に加算?」「日付 時刻のシリアル値の比較?」など、こちらの知識不足で、どのように数式にすれば良いのか分かりません。
具体的にどういった数式にすれば良いかご指南願いますでしょうか?

お礼日時:2022/01/20 01:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

教えて!goo グレード

このQ&Aを見た人がよく見るQ&A

このカテゴリの人気Q&Aランキング