Excel VBAを使用せず、開始曜日・時刻~終了曜日・時刻の日時を表示する方法

このQ&Aのポイント
  • Excel VBAを使用せずに、入力した夏時間の開始曜日・開始時刻から終了曜日・終了時刻まで、または冬時間の開始曜日・開始時刻から終了曜日・終了時刻までの日本時間としての表示を行いたいです。
  • 元データシートのGMT±0の日時を計算シートの日本時間として表示する方法について、400000行のデータに対応しています。
  • 具体的な計算式と表示例を提供します。
回答を見る
  • ベストアンサー

開始曜日・時刻~終了曜日・時刻の日時の表示

最初に、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」も見て頂き、回答をいただきたいと思います。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • msMike
  • ベストアンサー率20% (363/1775)
回答No.1

》 「開始曜日・・・の表示2」も見て頂き、… 前代未聞(未見?)、誰も見ないと思います。ウンザリされるだけかと。

miya_HN
質問者

お礼

回答ありがとうございます。 大半の方がうんざりするするのは分かりますが、それをご理解いただいた方に回答を頂きたかったと思いました。 補足しますと詳しく説明しなければご理解していただけないのではないかと思い、非常に長文となり文字数が足りないため、複数の質問となってしまいました。 ありがとうございました。

関連するQ&A

  • 2つの時刻間の時間を計算したい。

    よろしくお願いします。 エクセル2010、OSはWindows7です。 例) セルA1 に時刻その1 セルB1 に時刻その2 というデータが入力されています。 時刻は、YYYY/MM/DD hh:mm の形式で入力されており、2つの時刻の差は24時間以上なので日付は異なります。 この2つのセルの時間差をhh:mmの形式で表したいですが、単純に引き算しただけでは思うようにいかないようです。 やり方を教えてください。

  • 年月日+時刻で00:00のときは空白にしたい

    質問をご覧いただきましてありがとうございます。 よろしくお願いいたします。 とあるセルの書式を以下のように設定しています。   mm"月"dd"日( "aaa" )"hh:mm"着" ここに入ってくる値は、"yyyy/MM/dd hh:mm"(年月日+時刻)の場合と"yyyy/MM/dd"(年月日のみ)の場合があります。 このとき、以下のように表記を分けたいのです。 ◆年月日のみ(yyyy/MM/dd)   [入力]2001/01/01   [結果]01月01日(月) 着 ◆年月日+時刻(yyyy/MM/dd hh:mm)   [入力]2001/01/01 15:30   [結果]01月01日(月)15:30着 現在の状態は、年月日だけの入力の場合、   [結果]01月01日(月)00:00着    書式の設定上、当然のことながら上記のように時間の部分が"00:00"と表示されます。 年月日だけの入力の場合に、この"00:00"を空白に置き換えるにはどうしたらいいでしょうか?

  • EXCELで時刻表示の変換

    2015.07.03 18:39:38 というように 文字として得た時刻表示を、excel上で計算に使える yyyy/m/d h:mm:ss に変換する方法を教えてください。 できれば、そのままの形で計算に使えればいいのですが。 実際の用途は、yyyy.m.d h:mm:ss の形で表示されたグリニッジ標準時刻を日本時間に変えたいのです。 よろしくお願いいたします。

  • Oracleのselect文で日時表示する簡単な方法ないですか?

    SQL Plusで、select * from table とするとdata型はyyyy/mm/ddで表示されます。 いちいちto_char(time_stamp,’yyyy/mm/dd hh24:mi:ss’)とするのは苦痛なので、デフォルトで時間まで表示させる設定方法があったら教えてください。 # 私は、時々手作業でデータを集めている素人です。 # いままではSQL Serverだけだったのが、Oracleが増えて # 作法が異なるので戸惑ってます。

  • javaで時刻の判定

    String型のtimeに YYYY-MM-DD HH:MM:SS の形式である時刻が入っているとします. この時刻がYYYY年MM月DD日の20時00分00秒~23時59分59秒内であるかどうかを判定するにはどうしたらよいでしょうか? 文字列のままでは大小比較は困難な気がしますし、GregorianCalendar型もみてみたのですが、いまいち大小比較の仕方がわかりませんでした。 よろしくおねがいします

  • 現在時刻をYYYY-MM-DDThh:mm:ss.sssssss+hh

    現在時刻をYYYY-MM-DDThh:mm:ss.sssssss+hh:mmのフォーマットで表示するにはどうすればよいでしょうか? よろしくお願いします。

  • 【PL/SQL】DATE型の時刻の表示と非表示

    PL/SQLでのDATE型の取扱いについて教えてください。 初期化パラメータNLS_DATE_FORMATが'YY-MM-DD'で、 ある列を'YYYY/MM/DD HH24:MI:SS'形式でDBにINSERTしたい場合、 dtWorkEndDate := to_date(charWorkEndDate, 'YYYY/MM/DD HH24:MI:SS'); としてINSERTにdtWorkEndDateを用いると、 YY-MM-DD形式でDBに登録されてしまいます。 (dtWorkEndDateはDATE型。) ORACLEの設定かPL/SQLの問題なのかわからないのですが、 なにかアドバイスを頂けないでしょうか。 よろしくお願いします。

  • Excel 時刻の計算方法

    Excel 時刻の計算方法 セルA 10/26/2010 06:54:32 セルB 10/27/2010 12:34:56 このような状態で、セルCにhh:mm:ss形式でAの時刻からBの時刻までにかかった時間を表示させたいのですが どうすればいいのでしょう

  • エクセル VBA タイマー 0:00:00で

    5分ピッチで 仕事させます。 ブックオープンで インターバル = TimeValue("00:05:00") Application.OnTime Format(開始時刻, "hh:mm:ss"), "orgdata.必要な作業を行うマクロ", 待ち時間 Debug.Print "st" & 開始時刻 Call timer_set 反復時刻 = 開始時刻 If Format(反復時刻, "hh:mm:ss") > "23:54:00" Then 反復時刻 = Format(DateAdd("d", 1, 反復時刻), "yyyy/mm/dd") & " " & TimeValue("0:00:10") Else 反復時刻 = Format(反復時刻, "yyyy/mm/dd") & " " & TimeValue(反復時刻) + インターバル End If ループで5回ほど Application.OnTime Format(反復時刻, "hh:mm:ss"), "orgdata.必要な作業を行うマクロ", 待ち時間 Debug.Print "loopexit" & 反復時刻 で、デバッグアウトが end 2013/08/15 3:02:00 st 2013/08/14 23:50:10 loop2013/08/14 23:55:10 loop2013/08/15 00:00:10 loop2013/08/15 00:05:10 loop2013/08/15 00:10:10 loopexit2013/08/15 00:15:10 makuro 2013/08/15 00:20:10 makuro 2013/08/15 00:25:10 makuro 2013/08/15 00:30:10 で、「必要な作業を行うマクロ」 で 仕事のあと タイマー追加します。 If Format(反復時刻, "hh:mm:ss") > "23:54:00" Then 反復時刻 = Format(DateAdd("d", 1, 反復時刻), "yyyy/mm/dd") & " " & TimeValue("0:00:10") Else 反復時刻 = Format(反復時刻, "yyyy/mm/dd") & " " & TimeValue(反復時刻) + インターバル ' End If Application.OnTime Format(反復時刻, "hh:mm:ss"), "必要な作業を行うマクロ", 待ち時間 (反復時刻を 時間だけの時 formatを 入れて・・・) Debug.Print "makuro " & 反復時刻 ’これが デバッグで出力されています。 で、ダミーの作業が clup = clup + 1 orgdata.Cells(clup, 10) = Format(Now, "yyyy/mm/dd") orgdata.Cells(clup, 11) = Format(Now, "hh:mm:ss") orgdata.Cells(clup, 12) = Format(反復時刻, "yyyy/mm/dd") orgdata.Cells(clup, 13) = Format(反復時刻, "hh:mm:ss") 結果 2013/8/14 23:50:10 2013/8/15 0:20:10 2013/8/14 23:55:10 2013/8/15 0:25:10 2013/8/15 0:00:10 2013/8/15 0:30:10 これで、タイマー作業が 途切れます。 0:00:00 超える事に 問題があるなら 0:00:10 は 実行されないハズ・・・・ 反復時刻は yyyy/mm/dd & ” ” & ”hh:mm:ss” です。 試しに 時刻だけでやっても 同じでした。 さて、如何でしょ? 実は これで、動いていたのですが、3日ほど前から 0:00以降 突然タイマーが動かなくなったのです PCは 3台 同じ現象です よって WINの設定では無い・ エクセル オプションに 何か設定でもあるのか?? どうも VBAのタイマーは不可解で エクセル終了させず、 プログラムだけ終了、再ロードだと、前のタイマー残ったまま、ダブルでタイマー動くとか・・・・ それと、WIN32とかの 別のタイマー使った方が 良いのでしょうか??

  • TTClock時刻表示のフリーソフトの曜日表示について困っています。

    TTClock時刻表示のフリーソフトの曜日表示について困っています。 本日バージョンを1.5から1.6に変更しました。 書式の設定で曜日を\AにしたのですがSunと英語表示です。どうしたら日本語表示になりますか

専門家に質問してみよう