時刻データが所定の時刻の範囲内であるかどうかを判断したい

【質問】
とある時刻のデータ(例:Excelのセルに書かれている日付・時刻)が、所定の時刻の範囲内であるか否かを判断したい。
例:9:00 ~ 15:00の間ならOK、それ以外はNG、とする場合

時刻 OKまたはNG
2020/7/10 8:59 NG
2020/7/10 9:00 OK
2020/7/10 15:00 OK
2020/7/10 15:01 NG

Excelのセルの内容を変数に取得し、判断する形としたいのだが、判定方法はあるか。

【回答】
主に2通りの方法が考えられます。

■方法1:時刻部分を数字に変換し比較する
1-1:変数に日付の値を格納
1-2:Format関数で「時刻・日付」の数字のみを抽出した文字列にVal関数を使用し、数値型に変換
1-3:1-2の結果が、数字の「900」と「1500」の間であるかどうかを判定(9:00 ~ 15:00の間であるかどうかを判断する場合)
--------------------------------以下、サンプル(方法1)--------------------------------

<AMVARIABLE NAME="var_1" VALUE="2020/07/10 5:13" />
<AMLOOP FROM="1" TO="5" />
<AMSHOWDIALOG ACTIVITY="input" MESSAGE="値を入力" DEFAULTVALUE="2020/7/10 8:00" RESULTVARIABLE="var_1" />
<AMIF EXPRESSION="%(900 &lt;= Val(Format(var_1, &quot;HHnn&quot;))) AND (Val(Format(var_1, &quot;HHnn&quot;)) &lt;= 1500)%" USECOMPLEXUI="YES" />
<AMSHOWDIALOG>範囲内

%Val(Format(var_1, "HHnn"))%</AMSHOWDIALOG>
<AMELSE />
<AMSHOWDIALOG>範囲外

%Val(Format(var_1, "HHnn"))%</AMSHOWDIALOG>
<AMIF ACTIVITY="end" />
<AMLOOP ACTIVITY="end" />

 

■方法2:Datediff関数を使用する
2-1:変数に日付の値を格納
2-2:Datediff関数で、当日日付の9:00よりも2-1の変数の時刻が分単位で進んでおり、かつ当日日付の15:00よりも前であればTrueとするよう条件を組む
--------------------------------以下、サンプル(方法2)--------------------------------

<AMVARIABLE NAME="var_1" VALUE="" />
<AMSHOWDIALOG ACTIVITY="input" MESSAGE="時刻を入力してください" DEFAULTVALUE="%Date()% %Time()%" RESULTVARIABLE="var_1" />
<AMIF EXPRESSION="%DateDiff(&quot;n&quot;, Date() + Timeserial(9,0,0), var_1) &gt;=0 and DateDiff(&quot;n&quot;, var_1, Date() + Timeserial(15,0,0)) &gt;= 0%" USECOMPLEXUI="YES" />
<AMSHOWDIALOG MESSAGE="範囲内" />
<AMELSE />
<AMSHOWDIALOG MESSAGE="範囲外" />
<AMIF ACTIVITY="end" />

Knowledge記事検索

Knowledge

News・Information