人数・部屋タイプにより宿泊料金を計算する
INDEX関数は、行番号、列番号を指定して、交差するセルの値を返す関数です。
MATCH関数は、指定した範囲内から検査値を探し、上端もしくは左端から何番目かを返す関数です。
INDEX関数の行番号、列番号にMATCH関数をネストさせると、変動する条件に応じた結果を返すことができます。
今回は、[希望入力]シートのセルC5に入力されている人数とセルC7に入力されている部屋タイプに応じて、各プランの金額を表示します。
▼ 図2-1 人数と部屋プランに応じて宿泊料金を表示する
INDEX関数の参照先には、プランごとにシートに分かれた料金表を使用します。
行番号は‘人数’、列番号は‘部屋タイプ’を、MATCH関数を使って求めましょう。
▼ 図2-2 プランごとの料金表を参照
- セルC11を選択する
- 数式バー上にある[関数の挿入]ボタンをクリックし、[関数の挿入]ダイアログボックスを表示する
▼ 図2-3 INDEX関数を作成
- [関数の挿入]ダイアログボックスの[関数の分類]から[検索/行列]を選択する
- [関数名]から[INDEX]を選択する
- [OK]ボタンをクリックする
▼ 図2-4 [引数の選択]ダイアログボックス
- [引数の選択]ダイアログボックスが表示されたら、「配列、行番号、列番号」を選択する
- [OK]ボタンをクリックし、[関数の引数]ダイアログボックスを表示する
▼ 図2-5 INDEX関数の[関数の引数]ダイアログボックス
- [配列]には[松プラン]シートのセルB3からセルE6をドラッグし、[F4]キーを押して絶対参照にする
※ 数式をコピーした際に範囲がずれないよう、絶対参照にします。 - [行番号]にはMATCH関数を指定するため、[行番号]のボックス内をクリックして数式バー左側のボックスから[MATCH]を選択する
※ 一覧に表示されない場合は、[その他の関数]を選択して[関数の挿入]ダイアログボックスから指定します。
▼ 図2-6 MATCH関数の[関数の引数]ダイアログボックス
- MATCH関数の[関数の引数]ダイアログボックスが表示されたら、[検査値]ボックスには人数を指定するセルC5を選択し、[F4]キーを押して絶対参照にする
※ 数式をコピーした際に範囲がずれないよう、絶対参照にします。 - [検索範囲]には[松プラン]シートのセルB3からB6をドラッグし、[F4]キーを押して絶対参照にする
- [照合の種類]には完全一致したデータのみを検索するため、「0」を指定する
※ 照合の種類には「1」や「-1」を選択して、完全一致以外に検査値以下の最大値や検索値以上の最小値を検索することもできます。
▼ 図2-7 INDEX関数に戻る
- 数式バー内の「INDEX」部分をクリックし、INDEX関数の[関数の引数]ダイアログボックスに戻る
- [列番号]にはMATCH関数を指定するため、数式バー左側のボックスから[MATCH]を選択する
▼図2-8 MATCH関数の[関数の引数]ダイアログボックス
- [検査値]ボックスには部屋プランを指定するセルC7を選択し、[F4]キーを押して絶対参照にする
※ 数式をコピーした際に範囲がずれないよう、絶対参照にします。 - [検査範囲]には[松プラン]シートのセルB3からE3をドラッグし、[F4]キーを押して絶対参照にする
- [照合の種類]には完全一致したデータのみを検索するため、「0」を指定する
- [OK]ボタンをクリックする
▼図2-9 松プランの宿泊料金が表示される
2名、和室利用の松プランの金額が表示されます。
人数や部屋タイプを変更して、料金が変更されることを確認しましょう。