- ベストアンサー
Excel関数:日付にナノ秒を足して年月日を求めるには?
はじめまして、 日付にナノ秒を足して年月日を求める関数式を教えてください。例)日付“1601年1月1日”に長整数“128335644000000000”ナノ秒を足すと結果が年月日“2007年9月6日”と出るようにするにはどのような関数式が必要でしょうか。 宜しくお願いします。
- みんなの回答 (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日以降ですから、グレゴリオ暦でカバーできます。それ以前は、補正しないといけないと思います。
その他の回答 (2)
- grumpy_the_dwarf
- ベストアンサー率48% (1628/3337)
要するに、Excelは日付や時刻を1日を1とする数値で持ちます。だか ら、128335644000000000ナノ秒は、 128335644秒 / 60 / 60 / 24 = 1485.36625日 であり、これを基準の日時に加算するだけで結果が出るよ、っての が一般的な回答です。しかし、Excelは1900年以前の日付を扱う能力 がないので、今回の質問にはそのまま使えません。また、Excelの有 効桁数は20桁もありませんので、質問のようなスケールの話をする 場合にナノ秒単位での入力は無意味です。また、うるう秒はランダ ムに挿入されるので考慮不可能です。 ま、近似的な話でよければ、グレゴリオ暦を修正ユリウス日に換算 する数式を用いてなんとか出来るかも。UNIXタイムスタンプでもい いかな。
お礼
御礼が遅れてすみません。 ありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17069)
エクセルの関数(正確には、その引数)に秒の下を扱う関数はありません。 よく関数式といいますが、分けると (A)関数 (450個ぐらい?)と (B)数式 四則演算だけで基本を行う計算 の2つがあって、質問は(B)の範疇だと思います。 エクセルはある特定の時分秒を24時間を1とする単位の小数にして値を持っているようですが、それが質問者のケースに有効かどうかわかりません。その延長線でまずは考えてみて、成功するかどうかでしょう。1時間=1/24日,1分=1/60時間、1秒=1/60分、・・ の延長線で。 上記(A)の関数の質問というよりは、どういう加減乗除の式になるかでしょう。 エクセルは、特殊な理系の利用を歴史的にも前提にしてないように見受けられます(。エンジニアリング関数というのはありますが。) ですから、そのものズバリは無く、このニーズに一番詳しい当事者の質問者が式を考える内容と思います。
お礼
御礼が遅れてすみません。 ありがとうございました。
お礼
御礼が遅れてすみません。 貴レスは発想が柔軟で分かりやすく参考になりました。 あとは何とか自分で解決できそうです。 ありがとうございました。