駐車場の料金算出 ~ユーザー定義関数~
|
|
ユーザー定義関数 |
昨日書いた記事[駐車場の料金算出]なんですが、検証が甘く正確な数字にならない点がありました。考え方だけ・・・という形として記事は残しておきますが、計算式をそのまま使う事は止めてください。
そして今回ユーザー定義関数で作ってみました。
ユーザー定義関数
ユーザー定義関数の作り方を参考にしてください。
VBAコードは・・・
以下になります。
Function Tyuusya(入庫時間, 出庫時間, Optional 分込 = 0) '-----------------設定----------------------------------- 昼時間 = TimeSerial(6, 0, 0) '昼時間の設定( 6:00~) 夜時間 = TimeSerial(20, 0, 0) '夜時間の設定(20:00~) 昼料金 = 400 '昼料金の設定(円/時間) 夜料金 = 70 '夜料金の設定(円/時間) 一日料金 = 6300 '一日料金の設定 '-----------------メイン--------------------------------- 入時間 = TimeSerial(Hour(入庫時間), Minute(入庫時間), Second(入庫時間)) 出時間 = TimeSerial(Hour(出庫時間), Minute(出庫時間), Second(出庫時間)) 駐車時間 = 出庫時間 - 入庫時間 駐車日数 = Day(駐車時間 + 1) If 駐車日数 = 31 Then 駐車日数 = 0 End If If 入時間 >= 昼時間 And 入時間 <= 夜時間 Then If 出時間 >= 昼時間 And 出時間 <= 夜時間 Then If 入時間 <= 出時間 Then 昼駐車時間 = 出時間 - 入時間 Else 昼駐車時間 = 夜時間 - 入時間 昼駐車時間 = 昼駐車時間 + 出時間 - 昼時間 夜駐車時間 = 駐車時間 - 昼駐車時間 End If Else 昼駐車時間 = 夜時間 - 入時間 夜駐車時間 = 駐車時間 - 昼駐車時間 - 駐車日数 x = 夜駐車時間 End If Else If 出時間 >= 昼時間 And 出時間 <= 夜時間 Then 昼駐車時間 = 出時間 - 昼時間 夜駐車時間 = 駐車時間 - 昼駐車時間 - 駐車日数 Else If 入時間 < 昼時間 Then If 入時間 <= 出時間 Then If 出時間 > 夜時間 Then 夜駐車時間 = 昼時間 - 入時間 + 出時間 - 夜時間 昼駐車時間 = 駐車時間 - 夜駐車時間 - 駐車日数 Else 夜駐車時間 = 出時間 - 入時間 End If Else 昼駐車時間 = 夜時間 - 昼時間 夜駐車時間 = 駐車時間 - 昼駐車時間 - 駐車日数 End If Else If 入時間 <= 出時間 Then 夜駐車時間 = 出時間 - 入時間 昼駐車時間 = 駐車時間 - 夜駐車時間 - 駐車日数 Else If 出時間 < 夜時間 Then 夜駐車時間 = 出時間 + TimeSerial(24, 0, 0) - 入時間 Else 昼駐車時間 = 夜時間 - 昼時間 夜駐車時間 = 駐車時間 - 昼駐車時間 - 駐車日数 End If End If End If End If End If 料金 = 昼料金 * Hour(昼駐車時間) 料金 = 料金 + 夜料金 * Hour(夜駐車時間) 料金 = 料金 + 一日料金 * 駐車日数 If 分込 = 1 Then 料金 = 料金 + Minute(昼駐車時間) / 60 * 昼料金 + Minute(夜駐車時間) / 60 * 夜料金 End If Tyuusya = 料金 End Function |
このコードをそのままモジュールにコピー&ペーストしてください。(データの入ったエクセルファイルのモジュールに)
使い方
使い方としては、セルに=Tyuusya(入庫時間,出庫時間,分込み計算の判定)となります。
分込みの判定とは・・・前回書いたように30分でも10分でも料金を計算するかどうかの判定です。
0、もしくは設定しないと時間単位(分を切り捨て)の算出
1に設定すると分も含めた算出になります。
それと、時間の設定や料金帯が変わった場合にも対応させる為、設定部分を作っております。
変更したい場合は----設定-----内を変更すればOKです。
24時間駐車した場合の料金は
6:00~22:00→400円/h
22:00~6:00→ 70円/h
で計算すると6300円になったので6300円にしています。
関連記事
- 前の記事
- 駐車場の料金算出
- 次の記事
- 駐車場の料金算出 ~改造~