LOOKUP関数が意図したとおりに動作しない現象についての紹介です。
こちらの記事ではLOOKUP関数を利用した数式を紹介しましたが、
同じように記述しても動作が異なる場合があります。ここでは、LOOKUP関数で動作が違う場合について紹介します。
C1のセルに下記の数式を入力します。
=LOOKUP(A1,{1,2;"りんご","みかん"})
A1のセルに"1"を入力します。こちらの記事通りの動作であれば、
"りんご"が表示されるはずですが、"2"がセルには表示されます。
"2"を入力すると、"みかん"ではなく、"2"がセルには表示されます。
一方A1セルに"りんご"を入力すると、"みかん"がセルに表示されます。
C1のセルに下記の数式を入力します。
=LOOKUP(A1,{1,2,3;"りんご","みかん","パイナップル";"日本","日本","フィリピン"}).
"1"を入力すると、セルには"3"が表示されます。
"2"を入力すると、セルには"3"が表示されます。
"りんご"を入力すると、セルには"パイナップル"が表示されます。
"日本"を入力すると、セルには"フィリピン"が表示されます。
Lookup関数の検査値に与える配列が、正方形の配列、または、1次元の個数が2次元の個数より少ない場合は、検証する行・列が逆転するためです。
1 | 2 | 3 |
---|---|---|
りんご | みかん | パイナップル |
1次元(横方向/列)の配列数が3、2次元(縦方向/行)の配列数が2のため、検査に用いられる値は、1行目になります。つまり、
検査値 | 1 | 2 | 3 |
---|---|---|---|
セルに表示される値 | りんご | みかん | パイナップル |
となります。
1 | 2 |
---|---|
りんご | みかん |
1次元(横方向/列)の配列数が2、2次元(縦方向/行)の配列数が2のため、検査に用いられる値は、1列目になります。つまり、
検査値 | 1 | りんご |
セルに表示される値 | 2 | みかん |
となります。
1 | 2 | 3 |
---|---|---|
りんご | みかん | パイナップル |
日本 | 日本 | フィリピン |
1次元(横方向/列)の配列数が3、2次元(縦方向/行)の配列数が3のため、検査に用いられる値は、1列目になり、結果の値は3列目になります。つまり、
検査値 | 1 | りんご | 日本 |
---|---|---|---|
セルに表示される値 | 3 | パイナップル | フィリピン |
となります。
横方向に長い配列を渡すようにすることで、1行目を検査値に設定できます。
C1セルに以下を入力します。
=LOOKUP(A1,{1,2,3,4,5;"りんご","みかん","パイナップル","マンゴー","グレープフルーツ";"日本","日本","フィリピン","インド","アメリカ"})
A1セルに"1"を入力すると"日本"が表示されます。
A1セルに"5"を入力すると"アメリカ"が表示されます。
A1セルに"3"を入力すると"フィリピン"が表示されます。
検査値 | 1 | 2 | 3 | 4 | 5 |
セルに表示される値 | 日本 | 日本 | フィリピン | インド | アメリカ |
VLOOKUP,HLOOKUP を利用すると、検査値を1行目にするか、1列目にするかを明示的に指定できます。
VLOOKUPの利用方法はこちらの記事を、HLOOKUPの利用方法はこちらの記事を参照してください。