• ベストアンサー

Excel関数:日付にナノ秒を足して年月日を求めるには?

はじめまして、 日付にナノ秒を足して年月日を求める関数式を教えてください。例)日付“1601年1月1日”に長整数“128335644000000000”ナノ秒を足すと結果が年月日“2007年9月6日”と出るようにするにはどのような関数式が必要でしょうか。 宜しくお願いします。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。 それは、こうすればよいです。 “1601年1月1日”に、1,000年を足して、2601/1/1 とします。 ×128335644000000000ナノ秒は、 ナノ秒は、10^9 ですから、桁が足らないのでは? 秒にすると、 12833564400 となります。それを、日数に直すと、 = 12833564400/60/60/24 148536.625 となりますから、それを、 =2601/1/1 + 148536.625 3007/9/6 となりますから、それから、1,000年引けば、2007/9/6 となります。完全に数式で行いたければ、年、月、日をセルで分けて、 =DATE(IF(A1<1901,A1+1000),B1,C1) などとすればよいと思います。 なお、Excelは、1900年3月以前を含ませると、1日ずれますので、前は使えませんが、先は、使えます。それから、今回の話は、1582年10月15日以降ですから、グレゴリオ暦でカバーできます。それ以前は、補正しないといけないと思います。

isymhdo
質問者

お礼

御礼が遅れてすみません。 貴レスは発想が柔軟で分かりやすく参考になりました。 あとは何とか自分で解決できそうです。 ありがとうございました。

その他の回答 (2)

回答No.2

要するに、Excelは日付や時刻を1日を1とする数値で持ちます。だか ら、128335644000000000ナノ秒は、 128335644秒 / 60 / 60 / 24 = 1485.36625日 であり、これを基準の日時に加算するだけで結果が出るよ、っての が一般的な回答です。しかし、Excelは1900年以前の日付を扱う能力 がないので、今回の質問にはそのまま使えません。また、Excelの有 効桁数は20桁もありませんので、質問のようなスケールの話をする 場合にナノ秒単位での入力は無意味です。また、うるう秒はランダ ムに挿入されるので考慮不可能です。 ま、近似的な話でよければ、グレゴリオ暦を修正ユリウス日に換算 する数式を用いてなんとか出来るかも。UNIXタイムスタンプでもい いかな。

isymhdo
質問者

お礼

御礼が遅れてすみません。 ありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

エクセルの関数(正確には、その引数)に秒の下を扱う関数はありません。 よく関数式といいますが、分けると (A)関数 (450個ぐらい?)と (B)数式  四則演算だけで基本を行う計算 の2つがあって、質問は(B)の範疇だと思います。 エクセルはある特定の時分秒を24時間を1とする単位の小数にして値を持っているようですが、それが質問者のケースに有効かどうかわかりません。その延長線でまずは考えてみて、成功するかどうかでしょう。1時間=1/24日,1分=1/60時間、1秒=1/60分、・・ の延長線で。 上記(A)の関数の質問というよりは、どういう加減乗除の式になるかでしょう。 エクセルは、特殊な理系の利用を歴史的にも前提にしてないように見受けられます(。エンジニアリング関数というのはありますが。) ですから、そのものズバリは無く、このニーズに一番詳しい当事者の質問者が式を考える内容と思います。

isymhdo
質問者

お礼

御礼が遅れてすみません。 ありがとうございました。

関連するQ&A

  • EXCEL:日付を数値に変換したい

    こんばんは。 EXCELで日付を変換する方法を教えてください。 例)20090617→6   20090701→7   20100530→5 と云う様に年月日の「月」の部分を整数で表したいです。 2009/06/17のように区切りが無い為、非常に厄介です(/_;) どうぞ宜しくお願い致します。

  • Access2007において、[生年月日]をもとに本日の日付から「○歳

    Access2007において、[生年月日]をもとに本日の日付から「○歳○月」までを算出するには、どのような式を立てればいいのでしょうか? ちなみに「○歳○月○日」まで算出するとなると、どうなりますか? 検索結果からだと、「○歳」まで算出する式はなんとなく分かったのですが…。 ご存知の方がいらっしゃったら是非教えて下さい。 宜しくお願い致します。

  • 【Excel】日付に関する関数について

    はじめまして。初めて投稿いたします。 下記、わかる方いらっしゃいましたら教えていただきたいです。 指定の2つの日付があります。(日付①、日付②とします) 日付②が、日付①の週の日曜〜土曜の7日間におさまっているかをチェックする関数が知りたいです。 例えば、 指定の日付: ①2024/3/7 ②2024/3/18 ①の週にある日曜(3/3)〜土曜(3/9)に、②の日付がおさまっているかを調べる効率の良い関数はないでしょうか。 (この場合、おさまっていないので×と表示させたいです) もう一つの例 指定の日付: ①2024/3/3 ②2024/3/9 この場合は②が①の週の日曜〜土曜におさまっているので◯と表示させたいです。 関数は必ずしも1つにまとめる必要はなく、何段階になっても構いません。 Excelが得意な方々ご教示よろしくお願いいたしますm(__)m

  • エクセル 日付関数について

     日付関数について先ほども質問した者ですが、再度よろしくおねがいします。  生年月日から学年(例:小6)を表示する式を組みたく、サイトを検索していたら、下記のような式がありました。 =DATE(YEAR(TODAY())-(MONTH(TODAY())<=3)*1,4,1) これは、今日現在で学年を導く基準年の4月1日を表示する式です。(今日2009/1/4現在ならば2008/4/1と表示する式) この式が理解できません。DATEと後の”,4,1”は理解できます。 YEAR(TODAY())は2009 MONTH(TODAY())は1 (MONTH(TODAY())<=3)の意味は? 多分3月までなら2009-1を表示する? だけど2月になったら2009-2 ではおかしい。 あと*1は構文上必要なのか? 以上雑駁ですが、この式を簡単に説明してくださる方、おねがいします。

  • 年月日の数値化?

    time関数とlocaltime関数で、現在の年月日を取ることはできるのですが、逆に年月日を与えてその数値(秒で表せる等)を取る関数はありますか? つまり2000年10月30日から今日2000年12月7日までの数値を引き算で計算させたいのです。 質問が分かりにくくてごめんなさい。

    • ベストアンサー
    • Perl
  • エクセルの日付表示について

    20041001073545(2004年10月1日7時35分45秒) このような日付表示がたくさんあります。 数字のみ並んでいるもので、 まず、年月日(20041001)のみの表示にし、 それを今日(2004/11/29)までで91日経過しているかしていないかを区別したいのですが、どのようにしたらわかりやすく速いでしょうか? 日付に、/(スラッシュ)が入っていないと、関数は使えないでしょうか? どなたかお教え願います。よろしくお願いします

  • 日付

    今日の日付(date型)の3日20時間26分58秒後の日付(時刻)を 求める関数って御座いますでしょうか 例 1月16日14時41分55秒 の 3日20時間26分58秒後 → ?月?日?時?分?秒 教えて下さい。宜しくお願いします

  • Excel2007 日付関数について教えて下さい。

    A1に例えば「2012/5/22」と入力すると B2に翌々月10日の日付を入力するため 関数「=DATE(YEAR(A1),MONTH(A1)+2,10)」 と関数を入れました。 A1に日付が入れば翌々月10日の日付を返してくれるのですが A1が空白だと「1900/3/10」の値を返してきます。 日付が入っているとややこしいので消すもしくは日付じゃない値を返すことは出来ないでしょうか よろしくお願いします。

  • Excelで時間秒の関数。

    Excel2007を使用しています。 例、2012,4,8,am8:00,12秒 のように、日付、時間と秒をExcelのtoday関数 のように、今の日付や時間、秒まで一気に入力したい 場合、関数はなにかしらないでしょうか? 関数がない場合、Excelでなにかしらできる 方法はないですか?

  • Excel2007 IF関数での日付データ認識

    下記式で、2004/3/31以前を真とし、Vlookupを区別させたい。 【作成した式】=IF($D4<=3/31/2004,VLOOKUP($C4,Sheet3!$E$2:$G$26,2,FALSE),VLOOKUP($C4,Sheet3!$E$27:$G$51,2,FALSE)) 論理部分の日付の認識が ">=" と ">=" が逆になり ">=" のみあるいは ">=" の結果しかでずにおります。 関数で日付を認識させるには特別なルールが必要でしょうか。 D4(D列)は日付データ(例:2001/10/5)を入れてある。 Vlookup計算は機能している。 アドバイスをどうぞ宜しくお願いいたします。

専門家に質問してみよう