• ベストアンサー

エクセルでの日付、時間の計算

(1) 2015-11-16 09:09:49 AM (2) 2015-11-19 01:38:10 PM (3) (1)~(2)間の経過日数=3.2日 ------------------------------------------- 上記(1)と(2)のような年月日時分秒と並んだ文字列2つの間の経過日付を 計算できるような方法が無いか探しております。 結果は(3)に書いてあるように時間を排除し、日数だけで表示できるのが理想です。 当方エクセルは初心者ですが、回答いただけましたら理解できるよう努めます。 お手数ですがご教示いただけましたら助かります。 よろしくお願いします。

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

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

面倒な質問だな.普通の問題なら、=A2-AIのような引き算ですむパターンだが、 (1)元データが文字列 (2)「経過日付を計算できるような」といっていながら、「3.2日」と時間を考えた 小数点つきの日数を希望している点(下) (3)時刻表示部がAM、PMと違ったものである点 で初心者向けのやさしい問題ではないと思う。 下記でよいかどうかよくわからない(質問のデータ例が2例で少なく、他のデータでうまく行くかどうか)が上げてみる。 ーー 文字列にするため、先頭にシングルコーテーションを入れてテストデータを作成。 A1文字列 '2015/11/16 9:09:49 A2文字列 '2015-11-19 01:38:10 PM C1に =DATEVALUE(A1)+TIMEVALUE(RIGHT(A1,8)) C2に =DATEVALUE(A2)+TIMEVALUE(RIGHT(A2,11)) C1,C2の書式をユーザー定義で yyyy/m/d h:mm:ssに設定。 C1,C2の見た目 2015/11/16 9:09:49 2015/11/19 13:38:10 =ROUND(C2-C1,1)を空きセルに入れて  結果 3.2 書式は数値 (注意しないと他のセルでも、日付書式が移る場合があるので注意。1900なんて出たらそれです)) ーーー 今回は式の見た目が複雑になるので、LEFT関数の文字数の8,11は目視でいれた。 関数でやる方法もある。 例 =LEN(A1)-FIND(" ",A1)  で8 これを元の関数の8の部分に、入れ子にすれば、目視して入れないでできる。 エクセルでの、日付シリアル値と時刻値の仕組みは質問者は、判っているのかな。 初めてなら、エクセルでの大切なことなので、是非、WEBで「エクセル 日付シリアル値」などで検索して勉強のこと。

isora323
質問者

お礼

回答ありがとうございます。 おかげ様で解決することができました。 日付シリアル値などの知識もないため、検索し、勉強します。 今後のフォローまで書いていただきましたのでベストアンサーとさせていただきます。 ありがとうございました。

その他の回答 (5)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.6

まずはエクセルの基本をマスターしてください。 日付時刻のセルには 2015/11/16 9:9:49 と記入し、セルの書式設定の表示形式のユーザー定義で yyyy-m-d hh:mm:ss AM/PM と設定する 日数のセルには =ROUND(A2-A1,1) と数式を計算し、セルの書式設定で小数点以下1桁まで表示する。 その上で何か特別の事をしたいときは、応用として次のステップに進んでみてください。

isora323
質問者

お礼

ご指摘の通り、基本の知識が穴だらけの為、基本から勉強します。 回答ありがとうございました。

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.4

A1セルに文字列として 2015-11-16 09:09:49 AM と入力されていて、A2セルにはやはり文字列の 2015-11-19 01:38:10 PM が入力されているものとすれば次の数式で経過日数が算出できます。 =ROUND(A2-A1,1) → 3.2 結果が文字列の扱いになるときはセルの表示形式を標準に変更してください。 また、結果を3.2日と表示したいときは表示形式を 0.0"日" にすれば良いでしょう。 単純に終了日のセルから開始日のセルを差し引けば機関の日数になります。 時間数は小数になります。(1時間=1/24日) Excelでは数値に読み換え可能な文字列を数値として認識しますので質問のような文字列は日時を表す数値として認識します。 尚、開始日と終了日のセルが逆転しているときはABS関数で括れば負数になりません。

isora323
質問者

お礼

詳しくご教示いただきありがとうございます。 勉強になりました。

  • dogs_cats
  • ベストアンサー率38% (278/717)
回答No.3

3.2日という結果をその後数式の値としてセル参照するかで方法は変わってきます。 他の方の回答のtext関数は、文字列ですので、そのままでは数式に使用する事は出来ませんので、セルのユーザー定義書式を使用します。 A1、A2にデータ A3式 =ROUND(A2-A1,1) A3セル選択 → マウス右クリック→セルの書式設定→→表示形式タブ→ユーザー定義書式選択 種類(T)欄に下記をコピペしてOKボタン #.0"日" 四捨五入、切り上げ、切り下げで関数は異なります。 http://www.eurus.dti.ne.jp/~yoneyama/Excel/kansu/round.htm ユーザー定義書式 http://global-wing.com/activity/excel_hyoji1.html

isora323
質問者

お礼

回答ありがとうございました。 ROUND関数は使い勝手よさそうなので、今後の参考とさせていただきます。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.2

A1='2015-11-16 09:09:49 AM A2='2015-11-19 01:38:10 PM として A3=TEXT(A2-A1,"0.0日") または A3=A2-A1 で表示形式を、数値で小数点1桁にする。

isora323
質問者

お礼

表記の内容ではうまくいきませんでしたが、参考になりました。 ありがとうございました。

  • naoki1986
  • ベストアンサー率28% (28/98)
回答No.1

AM,PMを変換し A-B でできませんか? 外出先なので確認できずすみません。

isora323
質問者

お礼

素早い回答ありがとうございました。

関連するQ&A

専門家に質問してみよう