




Vlookupの参照先はSheet1!A1:E520などとなることが一般的だが、この参照先を固定化してしまおうと言うのが、「構造化」ということらしい。
この「構造化」を使うと、この参照先の入力が非常に多い場合、ラクになるのだ。つまり、参照先のSheet1!A1:E520などを名前を付けてやることで、例えば「給与」などとしたシートとそのシート内の範囲を固定化することがラクになる。
先の例に倣うと、
IF(ISNA(Vlookup(A1,Sheet1!A1:E250,3,FALSE))," " , Vlookup(A1,Sheet1!A1:E250,3,FALSE))
は
IF(ISNA(Vlookup(A1,給与,3,FALSE))," " , Vlookup(A1,給与,3,FALSE))
と簡略化ができるということで、入力ミスもなくなる。また、参照範囲が増えても、ちょっと変えてやるだけで、式を入れたマトリクスが全件変わるというところが「効率化」できるのだ。
<参照先>
【エクセル時短】VLOOKUP関数には「構造化参照」! テーブルを活用してデータの増減に自動対応する

この問題は以前、ここに掲載した心算りだったが、掲載していなかったようだ。
Vlookup関数を使うと、データベースを参照しながら、数値を持ってこれるので、とても便利なのだが、参照先に該当のデータがなかった場合、#N/A が表示されてしまい、見栄えのよくない表ができてしまうことが多々、ある。そこで、この #N/A を表示させないためのテクニックだ。
IF(ISNA(Vlookup(A1,Sheet1!A1:E250,3,FALSE))," " , Vlookup(A1,Sheet1!A1:E250,3,FALSE))
といった構文になる。IF文で、「該当データがなければ " " (ブランク)で表示してね、という意味の文章で、ISNA文で #N/A かどうかを調べている、という事だ。探している参照元データ(A1に相当する部分)が、参照先データベース(Sheet1!A1:E250,3,)で該当するものがない場合、#N/A が還される。まぁ、計算なので、正直に出てきてしまうのだが、その表示改変といったところだ。
✵#N/Aが出ることによって、DBに該当するものが「ない」ということも大切なのだが。
<参考サイト>
【エクセル中級者向け】数式・関数のエラー表示の回避テクニック③④【IF関数+ISERR関数・ISNA関数】

Sub 書式再設定() For Each e In Selection e.Value = e.Value Next End Sub




