もっとパソコンを活用しよう – エクセルの豆知識

これは覚えておいて損はないと思うエクセル関数や自動マクロでは教えてくれないVBAの書き方

部屋タイプと宿泊日数から料金を自動で計算(DATEDIF,HLOOKUP,MATCH)

旅行先で宿泊する場合、お部屋タイプや宿泊日数に応じて一泊当たりの宿泊料金が異なることがあります。
そんなときは、あらかじめこのようなシートを作成しておけば便利です。

エクセル関数を組み合わせて使用すれば、チェックイン日とチェックアウト日と部屋タイプを入力するだけで宿泊料金を自動で計算させることができます。
※関数を組み合わせて使用することを「関数をネストする」という言い方をする場合があります。
使用した関数はこれです。

  • DATEDIF(開始日から終了日までに日数差を計算する)
  • HLOOKUP(あるリスト内の一致するデータ情報を検索する)
  • MATCH(あるリスト内の一致する相対的な位置を検索する)

オレンジ色の部分がエクセル関数を使用している箇所です。右側に赤字で実際の計算式を記述しています。

<関数の説明>
B16[宿泊日数]セルDATEDIF関数を使用して、チェックイン日とチェックアウト日の差分を計算しています。
A18[一泊当りの料金]セルではHLOOKUP関数MATCH関数を使用して、宿泊料金表から一日当りの料金を表示させています。
関数を組み合わせて(ネストして)使用しているためちょっと複雑に見えますが、中身は分解して説明すると、
まず、MATCH(B14,部屋タイプ,0)」部分は「部屋タイプ」リスト内で指定された部屋タイプが何番目の位置にあるか検索しています。
「+2」しているのは、「部屋タイプ」と「料金表」の始まり行位置が2行ずれているからです。
そしてHLOOKUP関数では、宿泊日数34泊が料金表のどの列を参照すればいいか検索し、上記MATCH関数で求めた部屋タイプの行と一致する値を表示させています。