>「元データ」シート、「設定」シートのデータを理解していただくためには下記URLよりダウンロードしてもらえるとよく分かると思います。
このサイトでは、投稿者自身で内容の変更が可能なWebスペース上にアップロードされたファイルのURLを記載しての投稿は禁止されておりますので、情報を提示する際にその様な方法を使う事はなるべく避けた方が宜しいのではないかと思います。
【参考URL】
OKWaveコミュニティ > はじめてガイド > 禁止事項ガイドライン
後それから、ダウンロードしたExcelbookの「設定」シートには、夏時間の設定が1行しか入力されておりませんでしたが、「元データ」シートのデータは全て同じ地域内で行われた取引データという事なのでしょうか?
私はてっきり、「元データ」シートのデータは1行ごとに取引場所が異なっていて、それ故、「設定」シートには各行ごとの取引場所のサーバー時間に対応した夏時間の設定情報が、1行ごとに入力されているものと思っていました。
>そうしますと、右にずらし、
>「設定」シートのD3(サーバー時間の夏時間のGMT)
>「設定」シートのE3(サーバー時間の冬時間のGMT)
>「設定」シートのF3(夏時間の開始日時)
>「設定」シートのG3(夏時間の終了日時)
>とするのがよいかと思います。
そういう事でしたら日本の日時に変換した取引開始日時を、「元データ」シートと「設定」シートのデータから直接求める関数は次の様なものとなります。
=IF(元データ!$B3="","",IF(ISERROR(1/(TEXT(SUBSTITUTE(元データ!$B3,".","/")+0,LEFT("yyyy.mm.dd hh:mm:ss",MAX(LEN(元データ!$B3),16)))=元データ!$B3)/(TEXT((LEFT(元データ!$B3,4)&"年"&LEFT(設定!$F$3,FIND("月",設定!$F$3)))+(MID(設定!$F$3,FIND("第",設定!$F$3)+1,1)-1)*7+MOD(FIND(MID(設定!$F$3,FIND("曜日",設定!$F$3)-1,1),"日月火水木金土")-WEEKDAY(LEFT(元データ!$B3,4)&"年"&LEFT(設定!$F$3,FIND("月",設定!$F$3))),7)+REPLACE(設定!$F$3,1,FIND("曜日",設定!$F$3)+1,),"m月第"""&MID(設定!$F$3,FIND("第",設定!$F$3)+1,1)+0&"""aaaah:mm")=設定!$F$3)/(TEXT((LEFT(元データ!$B3,4)&"年"&LEFT(設定!$G$3,FIND("月",設定!$G$3)))+(MID(設定!$G$3,FIND("第",設定!$G$3)+1,1)-1)*7+MOD(FIND(MID(設定!$G$3,FIND("曜日",設定!$G$3)-1,1),"日月火水木金土")-WEEKDAY(LEFT(元データ!$B3,4)&"年"&LEFT(設定!$G$3,FIND("月",設定!$G$3))),7)+REPLACE(設定!$G$3,1,FIND("曜日",設定!$G$3)+1,),"m月第"""&MID(設定!$G$3,FIND("第",設定!$G$3)+1,1)+0&"""aaaah:mm")=設定!$G$3)/(ABS(設定!$D$3)<24)/(ABS(設定!$E$3)<24)),"変換不能",TEXT(SUBSTITUTE(元データ!$B3,".","/")+(9-IF(AND(SUBSTITUTE(元データ!$B3,".","/")+0>(LEFT(元データ!$B3,4)&"年"&LEFT(設定!$F$3,FIND("月",設定!$F$3)))+(MID(設定!$F$3,FIND("第",設定!$F$3)+1,1)-1)*7+MOD(FIND(MID(設定!$F$3,FIND("曜日",設定!$F$3)-1,1),"日月火水木金土")-WEEKDAY(LEFT(元データ!$B3,4)&"年"&LEFT(設定!$F$3,FIND("月",設定!$F$3))),7)+REPLACE(設定!$F$3,1,FIND("曜日",設定!$F$3)+1,),SUBSTITUTE(元データ!$B3,".","/")+0<(LEFT(元データ!$B3,4)&"年"&LEFT(設定!$G$3,FIND("月",設定!$G$3)))+(MID(設定!$G$3,FIND("第",設定!$G$3)+1,1)-1)*7+MOD(FIND(MID(設定!$G$3,FIND("曜日",設定!$G$3)-1,1),"日月火水木金土")-WEEKDAY(LEFT(元データ!$B3,4)&"年"&LEFT(設定!$G$3,FIND("月",設定!$G$3))),7)+REPLACE(設定!$G$3,1,FIND("曜日",設定!$G$3)+1,)),設定!$D$3,設定!$E$3))/24+0.000001,"yyyy/m/d h:m:s")+0))
同様に、日本の日時に変換した取引終了日時を、「元データ」シートと「設定」シートのデータから直接求める関数は次の様なものとなります。
=IF(元データ!$I3="","",IF(ISERROR(1/(TEXT(SUBSTITUTE(元データ!$I3,".","/")+0,LEFT("yyyy.mm.dd hh:mm:ss",MAX(LEN(元データ!$I3),16)))=元データ!$I3)/(TEXT((LEFT(元データ!$I3,4)&"年"&LEFT(設定!$F$3,FIND("月",設定!$F$3)))+(MID(設定!$F$3,FIND("第",設定!$F$3)+1,1)-1)*7+MOD(FIND(MID(設定!$F$3,FIND("曜日",設定!$F$3)-1,1),"日月火水木金土")-WEEKDAY(LEFT(元データ!$I3,4)&"年"&LEFT(設定!$F$3,FIND("月",設定!$F$3))),7)+REPLACE(設定!$F$3,1,FIND("曜日",設定!$F$3)+1,),"m月第"""&MID(設定!$F$3,FIND("第",設定!$F$3)+1,1)+0&"""aaaah:mm")=設定!$F$3)/(TEXT((LEFT(元データ!$I3,4)&"年"&LEFT(設定!$G$3,FIND("月",設定!$G$3)))+(MID(設定!$G$3,FIND("第",設定!$G$3)+1,1)-1)*7+MOD(FIND(MID(設定!$G$3,FIND("曜日",設定!$G$3)-1,1),"日月火水木金土")-WEEKDAY(LEFT(元データ!$I3,4)&"年"&LEFT(設定!$G$3,FIND("月",設定!$G$3))),7)+REPLACE(設定!$G$3,1,FIND("曜日",設定!$G$3)+1,),"m月第"""&MID(設定!$G$3,FIND("第",設定!$G$3)+1,1)+0&"""aaaah:mm")=設定!$G$3)/(ABS(設定!$D$3)<24)/(ABS(設定!$E$3)<24)),"変換不能",TEXT(SUBSTITUTE(元データ!$I3,".","/")+(9-IF(AND(SUBSTITUTE(元データ!$I3,".","/")+0>(LEFT(元データ!$I3,4)&"年"&LEFT(設定!$F$3,FIND("月",設定!$F$3)))+(MID(設定!$F$3,FIND("第",設定!$F$3)+1,1)-1)*7+MOD(FIND(MID(設定!$F$3,FIND("曜日",設定!$F$3)-1,1),"日月火水木金土")-WEEKDAY(LEFT(元データ!$I3,4)&"年"&LEFT(設定!$F$3,FIND("月",設定!$F$3))),7)+REPLACE(設定!$F$3,1,FIND("曜日",設定!$F$3)+1,),SUBSTITUTE(元データ!$I3,".","/")+0<(LEFT(元データ!$I3,4)&"年"&LEFT(設定!$G$3,FIND("月",設定!$G$3)))+(MID(設定!$G$3,FIND("第",設定!$G$3)+1,1)-1)*7+MOD(FIND(MID(設定!$G$3,FIND("曜日",設定!$G$3)-1,1),"日月火水木金土")-WEEKDAY(LEFT(元データ!$I3,4)&"年"&LEFT(設定!$G$3,FIND("月",設定!$G$3))),7)+REPLACE(設定!$G$3,1,FIND("曜日",設定!$G$3)+1,)),設定!$D$3,設定!$E$3))/24+0.000001,"yyyy/m/d h:m:s")+0))
お礼
回答ありがとうございます。 申し訳ありません。 回答者様のおっしゃる通り、「損益計算」シートで再度調べたところ22日でした。 焦って確認したせいか抜けていた部分がありました。 日本時間では、2011年7月23日 0:31:00(開始日時)~2011年7月23日 1:06:00(終了日時)となっており、土曜日に行われていました。 土・日・元日は、取り引きが行われていないというのが一般的に言われていることなんですが、土曜日に限っては厳密に金曜日の23:59:59に終了というわけではなく、土曜日の早朝まで取り引きが行われていまして、本来ならそこまで計算に入れなければならなかったんです。 ですが、ここではもうそれができないため、新規の質問を検討したいと思います。 正しいご指摘、ありがとうございます。 また、この件に関しまして質問する際には是非とも回答をいただけたら大変ありがたいです。 ありがとうございました。