開始曜日・時刻~終了曜日・時刻の日時の表示
最初に、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」も見て頂き、回答をいただきたいと思います。
よろしくお願いします。
お礼
回答ありがとうございます。 申し訳ありません。 回答者様のおっしゃる通り、「損益計算」シートで再度調べたところ22日でした。 焦って確認したせいか抜けていた部分がありました。 日本時間では、2011年7月23日 0:31:00(開始日時)~2011年7月23日 1:06:00(終了日時)となっており、土曜日に行われていました。 土・日・元日は、取り引きが行われていないというのが一般的に言われていることなんですが、土曜日に限っては厳密に金曜日の23:59:59に終了というわけではなく、土曜日の早朝まで取り引きが行われていまして、本来ならそこまで計算に入れなければならなかったんです。 ですが、ここではもうそれができないため、新規の質問を検討したいと思います。 正しいご指摘、ありがとうございます。 また、この件に関しまして質問する際には是非とも回答をいただけたら大変ありがたいです。 ありがとうございました。