開始曜日・時刻~終了曜日・時刻の日時の表示
最初に、VBA(マクロ)を使用せず関数のみで表示したいです。
やりたいことは、
入力した夏時間の開始曜日・開始時刻から終了曜日・終了時刻まで、
または、
冬時間の開始曜日・開始時刻から終了曜日・終了時刻までの日本時間としての表示、時間外は空白にしたいです。
では、詳しいことを下記に記載していきます。
----------------------------------------------------------------------------------------------------
「元データ」シートというシートから「計算」シートというシートのA2以下にGMT±0の日時の計算式が入っており、「計算」シートというシートのB2以下に日本時間としての日時の計算式が入っています。
基本的には1分ずつのデータが入っています。
データ量が多すぎるため約1年分の計算式が入っています(400000行)。
■「計算」シートのA2の計算式(GMT±0の日時):
=IF(ISBLANK(元データ!$A2),"",DATE(YEAR(TEXT(SUBSTITUTE(LEFT(元データ!$A2,FIND(",",元データ!$A2,1)-1),"-","/"),"YYYY/MM/DD HH:MM")),MONTH(TEXT(SUBSTITUTE(LEFT(元データ!$A2,FIND(",",元データ!$A2,1)-1),"-","/"),"YYYY/MM/DD HH:MM")),DAY(TEXT(SUBSTITUTE(LEFT(元データ!$A2,FIND(",",元データ!$A2,1)-1),"-","/"),"YYYY/MM/DD HH:MM")))+TIME(HOUR(TEXT(SUBSTITUTE(LEFT(元データ!$A2,FIND(",",元データ!$A2,1)-1),"-","/"),"YYYY/MM/DD HH:MM")),MINUTE(TEXT(SUBSTITUTE(LEFT(元データ!$A2,FIND(",",元データ!$A2,1)-1),"-","/"),"YYYY/MM/DD HH:MM")),))
■「計算」シートのB2の計算式(日本時間としての日時:GMT+9):
=IF($A2="","",IF(OR(基本設定不変!$E$3="無",AND(IF(ISNUMBER(基本設定不変!$G$3),MONTH(DATE(YEAR($A2),基本設定不変!$F$3,8-WEEKDAY(YEAR($A2) & "/" & 基本設定不変!$F$3,FIND(基本設定不変!$H$3,"日月火水木金土")+10)+(基本設定不変!$G$3-1)*7))=基本設定不変!$F$3,基本設定不変!$G$3="最終"),IF(ISNUMBER(基本設定不変!$L$3),MONTH(DATE(YEAR($A2),基本設定不変!$K$3,8-WEEKDAY(YEAR($A2) & "/" & 基本設定不変!$K$3,FIND(基本設定不変!$M$3,"日月火水木金土")+10)+(基本設定不変!$L$3-1)*7))=基本設定不変!$K$3,基本設定不変!$L$3="最終"))),TEXT($A2+IF(AND(基本設定不変!$A$3=9,基本設定不変!$B$3=9),基本設定不変!$A$3/24,IF(AND(基本設定不変!$A$3<>基本設定不変!$B$3,DATE(YEAR($A2),基本設定不変!$F$3+(基本設定不変!$G$3="最終"),8-WEEKDAY(DATE(YEAR($A2),基本設定不変!$F$3+(基本設定不変!$G$3="最終"),1),FIND(基本設定不変!$H$3,"日月火水木金土")+10)+(SUM(基本設定不変!$G$3)-1)*7)+基本設定不変!$I$3<=$A2+9/24,$A2+9/24<=DATE(YEAR($A2)+IF(ISERROR(FIND("翌",基本設定不変!$J$3,1)),0,1),基本設定不変!$K$3+(基本設定不変!$L$3="最終"),8-WEEKDAY(DATE(YEAR($A2)+IF(ISERROR(FIND("翌",基本設定不変!$J$3,1)),0,1),基本設定不変!$K$3+(基本設定不変!$L$3="最終"),1),FIND(基本設定不変!$M$3,"日月火水木金土")+10)+(SUM(基本設定不変!$L$3)-1)*7)+基本設定不変!$N$3),基本設定不変!$A$3/24,基本設定不変!$B$3/24)),"YYYY/MM/DD HH:MM")+0,"変換不能"))
「計算」シートの表示結果例:
A2:2013年01月02日 04:07、B2:2013年01月02日 13:07
A3:2013年01月02日 04:08、B3:2013年01月02日 13:08
A4:2013年01月02日 04:09、B4:2013年01月02日 13:09
A5:2013年01月02日 04:10、B5:2013年01月02日 13:10
A6:2013年01月02日 04:11、B6:2013年01月02日 13:11
もっと記載しなければならないことがあるのですが文字数が足りないため、質問名「開始曜日・時刻~終了曜日・時刻の日時の表示2」にて記載したいと思います。
「開始曜日・時刻~終了曜日・時刻の日時の表示2」も見て頂き、回答をいただきたいと思います。
よろしくお願いします。
お礼
早速ありがとうございます。 教えていただいた掲示板のNO24のスクリプトが 一番簡単そうなので設置してみたのですが・・・↓ <BODY> <script type="text/javascript"> <!-- var today,hr,n; today=new Date().getDay(); hr=new Date().getHours()*100 + new Date().getMinutes(); function ShowMess(){ var mess = ""; switch(today){ case 0: //日 if(hr >= 501 && hr <= 1000) mess = "日曜の5:01~10:00ですよ"; break; case 0: //日 if(hr >= 1001 && hr <= 1800) mess = "日曜の10:01~18:00ですよ"; break; case 0: //日 if(hr >= 1801 && hr <= 0) mess = "日曜の18:01~0:00ですよ"; break; case 0: //日 if(hr >= 01 && hr <= 500) mess = "日曜の0:01~5:00ですよ"; break; case 1: //月 if(hr >= 501 && hr <= 1000) mess = "月曜の5:01~10:00ですよ"; ・ ・ ・ (省略) ・ ・ ・ case 6: //土 if(hr >= 01 && hr <= 500) mess = "土曜の0:01~5:00ですよ"; break; } mess = "<center><b>"+mess+"</b></center>"; return mess; } document.write(ShowMess()); --> </script> </BODY> と、書きかえてブラウザで開いても全く何も表示されません。 スクリプトエラーにすらなりません・・・ どこか記述が間違っているのでしょうか? サンプルをそのまま貼り付けると表示されるのですが。