サーティファイExcel1級の実技練習問題3を解いていると、ちょっと難しい問題でVLOOKUP関数を使用する場面に遭遇しました。
最近、難しい問題に遭遇してばかりです。
というわけで、その解き方がわかったので、情報共有していきたいと思います。
VLOOKUP関数の引数にTRUEを使った問題
問題文
(8)「税額表」ワークシートの「税額一覧表」(B4からG52)のうち、セルB7からG52の範囲
に、名前「税額一覧」を定義しなさい。
(9) 以下の指示に従って、「勤怠表」ワークシートの「所得税」(J14)を設定しなさい。
1. VLOOKUP関数を使用して、「給与額」(J13)に対する所得税額を表示する。
2. 引数「範囲」には(8)で定義した名前を使用し、「扶養家族」(J9)の人数に対応し
た列を検索する。なお、「検索値」が完全に一致しない場合は、近似値を含めて検索
する。
解説
(8)「税額表」ワークシートの「税額一覧表」(B4からG52)のうち、セルB7からG52の範囲
に、名前「税額一覧」を定義しなさい。
ですが、これは簡単です。
- B4からG52を選択
- 右クリックして出てくるメニューから[名前の定義]をクリック
- 選択した範囲に「税額一覧」という名前を付ける
- [OK]をクリック
これで定義は完了です。
(9) 以下の指示に従って、「勤怠表」ワークシートの「所得税」(J14)を設定しなさい。
1. VLOOKUP関数を使用して、「給与額」(J13)に対する所得税額を表示する。
2. 引数「範囲」には(8)で定義した名前を使用し、「扶養家族」(J9)の人数に対応し
た列を検索する。なお、「検索値」が完全に一致しない場合は、近似値を含めて検索
する。
こちらがちょっと厄介です。まずは、VLOOKUP関数の公式を見ていきましょう。
=VLOOKUP(検索値, 範囲, 列番号, [検索の型])
まず、検索の型から見ていきます。問題によると近似値を含めてということなので、検索の型は「TRUE」を指定します。
次に、検索値は「給与額」(J13)に対する所得税額とあるので、「給与額」(J13)が該当します。ここで「税額一覧表」を見ていただきたいのですが、「給与額」が「以上」「未満」の2つ数値の間を取っていることという条件が見て取れます。
なぜここで、「以上」「未満」という2つの給与が発生するのかといいますと、これは検索の型にTRUEを指定して、近似値を取るとしていることが関係しています。
そのことを以下に説明します。
例えば、「0、88000、89000、90000、91000」の範囲から、検索の型をTRUEにして「85000」を検索すると「0」が返ります。
TRUEによって範囲のうちの小さい方の値が近似値として返ることを示しています。
これは重要なことですので、しっかりと覚えておきましょう。
つまり、範囲のうち小さい方の値が近似値として使われるのであれば、B7~B52を検索値の比較対象とし、範囲のうち大きい方の値が近似値として使われるのであれば、C7~C52を検索値の比較対象とするということになります。
しかし、VLOOKUP関数でTRUEを使用した場合は範囲のうち小さい方の値を近似値として取るので、B7~B52を検索値の比較対象とすることになります。だから、「税額一覧」の範囲がC7からG52ではなく、B7からG52を取るという裏付けにもなります。
あとは列番号ですが、これもちょっと頭を使います。列番号は「扶養家族」(J9)の数値に依存することから、「勤怠表!J9+3」となります。ちょっとよくわからないという方は、表をよく見てみてください。0だと3番目、1だと4番目、…、という法則が見つかりますよね。
これらを元に、正解を導くことができます。
正答例
したがって、J14に入る正答例としては、次のような式が考えられます。
=VLOOKUP(勤怠表!J13,税額一覧,勤怠表!J9+3,TRUE)
シンプルな解答が導けました。
最後に
いかがでしたか?
私は「検索値」を「以上」「未満」の2つの値と比較しなくてはいけないと思い込んで、どうすればいいのか沼にハマってしまいました。また、列番号の導き方がわからずCHOOSE関数を列番号に入れ込む暴挙に出ました。
そんなことをしなくても、シンプルに解ける問題でした。むしろ、CHOOSE関数はVLOOKUP関数の中に使用することはできないので、使ってはいけません。
皆さまのお役に立てたならば幸いです。
ではでは、参考までに。
おまけ
サーティファイの Excel®表計算処理技能認定試験1・2級を受験するにあたり、これさえ買っておけば必ず受かるといっても過言ではない一冊の本をオススメ致します。
それがこちら。
私も購入させていただき、大変お世話になっております。
コメント