有村日記

日常感じたこと、気がついたこと、思ったことを記録

EXCELファイルで時間に応じた結果を返す関数を紹介します

2019-11-26 21:00:01 | Weblog

想定するシチュエーション

 毎日、ルーチンで一定の時間に、帳票を出力するが、EXCEL関数により、その時間によってメッセージを変えたり、処理をかえたりすることができないか。

活用の概念

1ファイルに1日から31日までのワークシートがあり、ワークシート名はyyyymmddの形式となっている。
毎日、時間に応じて帳票を出力する際に、その時間に応じてセルの値を設定する関数を考えた。

下記の関数は次の3条件により結果を判定する。
・当日のWSではないか、当日であるが16時30分過ぎである→確確
・当日で、15時29分を過ぎており、16時30分以前である→途中版
・当日で、15時29分以前である→開始後

=+IF(TEXT(TEXT(RIGHT(CELL("filename",A1),LEN(CELL("filename",A1))-FIND("]",CELL("filename",A1))),"0000!/00!/00"),"yyyymmdd")<>+TEXT(TODAY(),"yyyymmdd"),"確確",IF(TIME(HOUR(NOW()),MINUTE(NOW()),SECOND(NOW()))>TIME(21,30,0),"確確",IF(TIME(HOUR(NOW()),MINUTE(NOW()),SECOND(NOW()))>TIME(15,29,0),"途中","開始後")))

(注)新規EXCELファイルで試験する場合には、一旦適当な名前で保存したあとに上記関数をお試しください。

(注)時間とか判定結果テキストは適宜変更してください。

(注)式の詳細説明は省略します。



最新の画像もっと見る

1 コメント

コメント日が  古い順  |   新しい順
Unknown (本人)
2023-07-17 18:58:01
A列に日付があり、内閣府国民の祝日を”_Holiday”と名前付けしたファイルにて、以下のとおり設定できる。

=OR((AND(+MOD($A2,7)>1,+ISNA(VLOOKUP($A2,_Holiday,1,FALSE))))=FALSE,OR(TEXT($A2,"mmdd")="0102",TEXT($A2,"mmdd")="0103",TEXT($A2,"mmdd")="1231")=TRUE)

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。