質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.40%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

5877閲覧

excel vba で2つの日付時刻(文字列で取得)間の秒数を取得する方法

mori_C

総合スコア34

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2019/01/22 08:03

excel の vbaを使いデータ分析をするマクロ(簡単なもの)を作成しております。
csvファイルを読み出し、A行にデータを取得した日時が記録されています。
各データと経過時間の相関を取得したいと思いましたが、日時の差分を秒で算出する方法がわかりません。
たとえば 2019/1/9 13:01:23 ・・・A
2019/1/10 23:31:17 ・・・B
というデータを文字列で得られた場合に、B-Aが何秒か算出する簡単な方法は
無いでしょうか。
単純な足し算、引き算ではできそうになかったため、強引に
2019/1/9  と 13:01:23 を 間のスペースでsplit しそれぞれ変数に格納
さらに 2019 と 1 と 9 を "/"でsplitしそれぞれ変数に格納
13:01:23を 13 と 1 と 23 に ":"でsplitしそれぞれ変数に格納して
文字列を数値に型変換し、計算しようとしましたが、
月マタギや、年マタギ、うるう年などを考えないといけないことに気づき、
行き詰りました。

エクセルの機能を使うと引き算ができそうですが、あくまでvbaのみで解決したいです。
詳しいかた、ご教授のほどよろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

  1. 各日付時刻文字列をDate型に変換する。
  2. DateDiff関数で秒数指定で2つのDate型の差分を採る。

これが一番簡単かと思いますがどうでしょうか?

Public Sub test() Dim startTimeString As String Dim endTimeString As String startTimeString = "2019/1/9 13:01:23" endTimeString = "2019/1/9 13:05:21" ' Date型に変換 Dim startTime As Date Dim endTime As Date startTime = CDate(startTimeString) endTime = CDate(endTimeString) ' DateDiffで秒指定による差分算出 Dim elapsedSeconds As Long elapsedSeconds = DateDiff("s", startTime, endTime) MsgBox (elapsedSeconds) End Sub

投稿2019/01/22 08:49

backyard

総合スコア534

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mori_C

2019/01/22 23:12

DateDiff関数を使い"S"をつければよいのですね。 大変勉強になりました。 意図していたプログラムができそうです。 ありがとうございます。
guest

0

普通の日時文字列だけでよければ、自分で頑張らずとも、CDATE関数を使ってからDATEDIFF関数でいいような?

投稿2019/01/22 08:37

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tatsu99

2019/01/22 08:42 編集

質問者は差分の日でなく差分を秒単位で求めています。ご提示の方法は、差分を日単位若しくは月、年単位で求める方法です。
退会済みユーザー

退会済みユーザー

2019/01/22 08:49

DATEDIFFの第一引数に"s"を使えば秒単位も出ますよ。
tatsu99

2019/01/22 09:22

失礼しました。 lazybones2000さん が提示された方法でうまくいくことを確認しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.40%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問