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

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

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

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

Q&A

解決済

3回答

8905閲覧

Excel VBA 日付(Date型)の割り算はどのようにしたらいいのでしょうか?

GiveAHand

総合スコア286

VBA

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

0グッド

0クリップ

投稿2016/06/28 14:32

Excel VBA でアプリケーションを作成しています。

あるサイトの閲覧時間の平均を出したいのですが、例えば、7日分の閲覧時間をData型変数に加算していって、それを7日分の平均で割るみたいな計算をするのはどうしたらいいのでしょう?

日付型に対して、加算と減算はあるのですが、掛け算、割り算はないですよね。。。

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

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

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

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

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

guest

回答3

0

VBAでの日付型は
1900年01月01日00時00分00秒からの経過分を表すシリアル値です。
整数部が日数で
小数部が時分秒です。

平均を出すため、各日の閲覧時間を算出するのに下記で算出できます。

VBA

1Dim Duration As Single 2Dim StartDateTime As Date 3Dim EndDateTime As Date 4 5Duration = EndDateTime - StartDateTime

各算出時間を合計し、日数で割れば平均が出来ます。
但し、時分秒が小数になっていますので、
利用の仕方によっては下記の様に整数化が必要です。

VBA

1Dim valAve As Single 2valAve = #2:03:18 AM# ' 平均が 2時間3分18秒 の例 3 4Dim valHours As Integer 5Dim valMinutes As Integer 6Dim valSeconds As Integer 7 8valHours = Hour(valAve) ' Int(valAve * 24) 9valMinutes = Minute(valAve) ' Int((valAve * 24 - valHours) * 60) 10valSeconds = Second(valAve) ' Int((((valAve * 24 - valHours) * 60) - valMinutes) * 60)

コメントにしている部分は冗長ですが
シリアル値を自分で計算する場合の計算方法です。

以上、参考になりますでしょうか?

投稿2016/06/28 15:44

Aeona

総合スコア396

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

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

GiveAHand

2016/06/29 16:47

Aeona様 ご回答ありがとうございます。 はい。普通に割り算でいけました。 なるほど。 自分でシリアル化してもいいんですね。 ありがとうございます!
guest

0

ベストアンサー

Excelでは、日時はシリアル値という値で管理されていて内部的には浮動小数です。

設定にもよりますが、1900年1月1日をから1日を1として、時間は小数で表しています。
なので、お昼の12時は0.5です。

つまり7日分で割りたいということであれば、7で割れば結果が出せるはずです。
私が念のため確認で簡単に書いたプロシージャを載せておきますね。

VBA

1Public Sub dateTypeTest() 2 3 Dim d As Date 4 Debug.Print CDbl(d) 5 6 d = d + "6:00" 7 Debug.Print CDbl(d) 8 9 d = d + "6:00" 10 Debug.Print CDbl(d) 11 12 d = d + "6:00" 13 Debug.Print CDbl(d) 14 15 d = d + "6:00" 16 Debug.Print CDbl(d) 17 18 Debug.Print CDbl(d / 2) 19 20End Sub

実行結果
0
0.25
0.5
0.75
1
0.5

参考ページ
Excelで時間と数値の掛け算をする

> 7日分の平均で割る
を7日で割ると捉えましたが、この認識が間違って無ければの回答です。

投稿2016/06/28 15:32

Mr_Roboto

総合スコア2208

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

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

GiveAHand

2016/06/29 16:46

BJCRobot様 ご回答ありがとうございます。 なるほど。 そういう事なんですね! 普通に割り算でいけました! ありがとうございました!
guest

0

VBAはよくわからないのですが、扱うのは「時刻」(hh時mm分)ではなくて「時間」(h時間m分間) ですよね?
時刻から時刻を引き算して時間にした時点で、すでにDate型ではないのでは。Pythonならtimedeltaです。

そこまでくれば、普通の実数の平均と考え方は同じはず。

投稿2016/06/28 14:54

matobaa

総合スコア2493

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

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

GiveAHand

2016/06/29 16:43

matobaa様 ご回答ありがとうございます。 すいません。そうですね。 普通に割り算でいけました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問