Excel に [0..100] の数字を含むデータ列があります。これらの数字を次のような新しい値セットにマッピングする新しい列が必要です。
- > 90 : 4
- 80-90:3
- 70-79:2
- 60-69:1
- < 60 : 0
私はこれを試してみましたVLOOKUP、具体的には のテスト入力と の77
関数呼び出しでVLOOKUP(77, A10:B19, 2, TRUE)
、A10 はこの範囲の左上の要素です。
99 4 90 4 89 3 80 3 79 2 70 2 69 2 60 1 59 0 0 0
しかし、私は という結果を得ています#N/A
。ドキュメントによると、これは
...検索値の値が、テーブル配列の最初の列の最小値よりも小さいです...
しかし、77 を渡しているので、明らかにそうではありません。ただし、79
ルックアップ テーブルに明示的に存在する値である のテスト入力を使用すると、正しい結果が得られます。
ここで VLOOKUP は間違ったアプローチでしょうか? この種のマッピングを行う最適な方法は何でしょうか?
入力値とルックアップ テーブルは両方とも Number として入力されていることに注意してください。
答え1
Vlookupの代わりにIndex/Matchを使用すると、質問にあるように検索テーブルを降順で並べ替えることができます。式は次のとおりです。
=INDEX(B1:B10,MATCH(77,A1:A10,-1))
3 番目のパラメータとして -1 を指定して Match を実行すると、テーブルが降順に並べ替えられているときに、検索値以上の値が返されます。
答え2
長い間このことを調べた結果、ルックアップ テーブルは昇順に並べ替える必要があることがわかりました。ドキュメントには並べ替える必要があると記載されていますが、並べ替え順序は指定されていません。昇順以外の順序では#N/A
エラーが発生します。