人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

ExcelVBAにおいて(VBAを使わなくていけないということではありません)
二つのセルに分かれて、時刻(年月日、時分秒)が記録されています。
(例
セルA1(2014/4/21)とセルA2(23:12:56)
例終わり)
このような二つのセルが一組である時点の時間を表しており、そのようなセル二つから経過時間を求めるためのコードを募集します。
なお、日付の方の書式設定は「日付:種類は*2014/3/14」
時間の方は「ユーザー定義?種類は?h:mm」
です。
例えば、日付が「2014/5/1」時刻が「12:00:00」から
「2014/5/3」時刻が「13:02:00」
ならば2日と1時間2分といった具合です。
答えはまた、分割して、日付の部分と時間の部分に出力したいです。
よろしくお願いします。

具体的なコードへの説明のある方へ高ポイントを配布します。

●質問者: しゅうすけ
●カテゴリ:コンピュータ ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● snow0214
●300ポイント ベストアンサー

こんな感じでどうでしょう。
A1=年月日,A2=時分秒
B1=年月日,B2=時分秒

A1,A2とB1,B2の差をC1に代入します。

Sub hoge()
 Dim ti0, ti1 As Date
 Dim td As Long
 Dim dd, hh, mm, ss As Integer
 Dim res As String

 ti0 = ActiveSheet.Cells(1, 1).Value + ActiveSheet.Cells(2, 1).Value
 ti1 = ActiveSheet.Cells(1, 2).Value + ActiveSheet.Cells(2, 2).Value
  '差を計算する
 If (ti0 < ti1) Then
 td = DateDiff("s", ti0, ti1)  '日時の差
 dd = Int(td / 60 / 60 / 24)
 hh = Int((td - dd * 60 * 60 * 24) / (60 * 60))
 mm = Int((td - dd * 60 * 60 * 24 - hh * 60 * 60) / 60)
 ss = Int(td - dd * 60 * 60 * 24 - hh * 60 * 60 - mm * 60)
 res = ""
 If (dd <> 0) Then res = dd & "日"
 res = res & hh & "時間" & mm & "分" & ss & "秒"
 Else
 res = "日時の順序を入れ替えてください"
 End If
  '表示
 ActiveSheet.Cells(1, 3).Value = res
End Sub

関数で書くと次のようになります。

=TEXT((B1+B2)-(A1+A2),"d日h時間m分s秒")

2 ● a-kuma3
●200ポイント

日付や時刻のセルは、実は 1900/1/1 0:00 からの相対日です。

f:id:a-kuma3:20140504162248p:image
B1 に 2014/5/1 、C1 に 12:00 を入力しました。
F1 は =B1、G1 は =C1 で、書式を yyyy/m/d h:mm にしました。
また、F2 は =B1、G2 は =C1 で、こちらは書式を標準にしたものです。

日付だけを入力すると、時刻が 0:00 の相対日。
時刻だけを入力すると、日付が 1900/1/1 の入力した時刻になります。

つまり、B1+C1 は 2014/5/1 12:00 の相対日になります。

B5 と C5 に差分を求める対象の日と時刻を入力しました。
D2 と E2 は、以下の式です。

=$B5+$C5-($B$1+$C$1)

絶対参照は、セルをコピーしたときに変えたくないのでつけているだけです。
B5+C5 が、2014/5/3 13:02 の 1900/1/1 0:00 からの相対日。
B1+C1 が、2014/5/1 12:00 の 1900/1/1 0:00 からの相対日です。
これを引くことで、2014/5/1 12:00 から 2014/5/3 13:02 の相対日になります。

これを D5 は書式を「d "日"」、E5 は書式を「h "時間" mm "分"」としました。

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ