駐車場の料金算出 ~ユーザー定義関数~

ユーザー定義関数

昨日書いた記事[駐車場の料金算出]なんですが、検証が甘く正確な数字にならない点がありました。考え方だけ・・・という形として記事は残しておきますが、計算式をそのまま使う事は止めてください。

そして今回ユーザー定義関数で作ってみました。

ユーザー定義関数



ユーザー定義関数の作り方を参考にしてください。

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

このコードをそのままモジュールにコピー&ペーストしてください。(データの入ったエクセルファイルのモジュールに)

29-1.jpg



使い方



使い方としては、セルに=Tyuusya(入庫時間,出庫時間,分込み計算の判定)となります。

29-2.jpg



分込みの判定とは・・・前回書いたように30分でも10分でも料金を計算するかどうかの判定です。

0、もしくは設定しないと時間単位(分を切り捨て)の算出

1に設定すると分も含めた算出になります。



それと、時間の設定や料金帯が変わった場合にも対応させる為、設定部分を作っております。

変更したい場合は----設定-----内を変更すればOKです。



24時間駐車した場合の料金は

6:00~22:00→400円/h

22:00~6:00→ 70円/h

で計算すると6300円になったので6300円にしています。

コメントをどうぞ

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

  • ▼お小遣い稼ぎしませんか?▼ 日々の生活にhappyをプラスする|ハピタス

    クレジットカード・FX口座を作るだけで簡単に3万円GETです。一切支出はありません。

コピペ COLUMN SUMIF ワイルドカード HLOOKUP TODAY 無料 目標 INDEX 図形 VLOOKUP テンプレート MATCH 置換 SUMIFS 作業効率UP 日付 ユーザー定義関数 SUM DATE 印刷 XLSTART バーコード 変換 検索 グラフ COUNTIF フロー図 条件付き書式 NA()
  • 関西在住の30代サラリーマン。事務職で毎日Excelと戯れています。
    システム導入なんて資金が無い!Excelでなんとかやりたい零細中小の社長さん・事務員さんの力になればと思います。
    詳しいプロフィール


PAGE TOP ↑