VLOOKUPをXLOOKUPに置き換える理由と、安全な移行手順
商品マスタに列を1本挿入しただけなのに、集計表の単価が全部おかしくなった。エラーは出ていない。数字が入っているので、しばらく気づかなかった。VLOOKUPを使っていると、いつかこれに当たります。使い方が悪いのではなく、VLOOKUPの構造上そうなります。■ VLOOKUPの弱点は3つ1. 列番号が「何番目か」という数字で固定されている=VLOOKUP(A2, 商品マスタ!A:D, 4, FALSE)この「4」は「範囲の左から4列目」という意味で、どの見出しの列か、という情報は持っていません。マスタのB列とC列の間に1列挿入すると、4列目にあった単価は5列目に動きます。しかし数式は4のままなので、単価ではなく別の列の値を静かに返します。列を削除して範囲外になれば #REF! になるので気づけますが、挿入した場合はエラーになりません。気づけない方の壊れ方です。2. 検索列より左の列を取れないVLOOKUPは範囲の1列目を検索して、そこから右にある列を返します。商品コードで検索して、その左にある「分類」を取りたい——これができません。そのため、マスタの列を並べ替えたり同じ列を複製したりという、本来不要な加工が発生します。3. 見つからなかったときの処理が書けない該当なしのときは #N/A が返ります。消すには数式全体を囲むしかありません。=IFERROR(VLOOKUP(A2, 商品マスタ!A:D, 4, FALSE), "")一見きれいですが、これは「該当なし」だけでなく、列番号ずれによる #REF! もまとめて空白にします。 異常が起きていることが、画面から消えます。■ XLOO
0