アプリ版:「スタンプのみでお礼する」機能のリリースについて

はじめまして、

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

宜しくお願いします。

A 回答 (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日以降ですから、グレゴリオ暦でカバーできます。それ以前は、補正しないといけないと思います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/08/23 21:59

要するに、Excelは日付や時刻を1日を1とする数値で持ちます。

だか
ら、128335644000000000ナノ秒は、

128335644秒 / 60 / 60 / 24 = 1485.36625日

であり、これを基準の日時に加算するだけで結果が出るよ、っての
が一般的な回答です。しかし、Excelは1900年以前の日付を扱う能力
がないので、今回の質問にはそのまま使えません。また、Excelの有
効桁数は20桁もありませんので、質問のようなスケールの話をする
場合にナノ秒単位での入力は無意味です。また、うるう秒はランダ
ムに挿入されるので考慮不可能です。

ま、近似的な話でよければ、グレゴリオ暦を修正ユリウス日に換算
する数式を用いてなんとか出来るかも。UNIXタイムスタンプでもい
いかな。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/08/23 22:00

エクセルの関数(正確には、その引数)に秒の下を扱う関数はありません。


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

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

お礼日時:2007/08/23 22:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!