Excel VBA でアプリケーションを作成しています。
あるサイトの閲覧時間の平均を出したいのですが、例えば、7日分の閲覧時間をData型変数に加算していって、それを7日分の平均で割るみたいな計算をするのはどうしたらいいのでしょう?
日付型に対して、加算と減算はあるのですが、掛け算、割り算はないですよね。。。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答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
総合スコア396
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
総合スコア2208
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/06/29 16:47