EXCELで出来ること 知っておきたい【基礎の基礎文字列と数値】


文字列と数値は、なんとなく認識して知っていると思います。
例を交えて説明すると、セルの中で扱いが文字列だと、「0004」と入力すれば 「0004」と表示されます。セルの書式設定が標準(数値)だと、「0004」と入力しても「4」としか表示されません。ゼロが頭につくとわかりやすいのですが、これが「1004」だとどうでしょうか?セルの書式設定が、文字列でも数値でも、同じ「1004」となり見分けはつきません。これで嵌まるることがよく有ります。

たとえばVLOOKUPで、検索値と検索範囲は同じ文字列なら文字列、数値なら数値でないと、#N/A(NOT ASSIGN)が返されてしまいます。注意点としては

①システムが吐き出す数値は文字列であることが多い。しかしCSV形式の場合は通常クリックで開くとすべてゼロ落(CSV上では文字列の扱いでも、エクセルで一度開くと、数値になること)してしまいます。(確認するには、WINなら右クリックでプログラムを指定して開くでWORDPADやテキストで開くのが手っ取り早いです。MACもメモかTEXTエディタで開けばいいかと思います。開いてみると、文字列は大概” ”で囲まれていますのでわかります。)周りくどい説明なのですが、何が言いたいかというと、システムにより数値か文字列化の吐き出しかを確認しないと、検索されないことがあるということです。

② ①の場合は、システムからの出力ですので、ずべてが数値・すべてが文字列なので最終的には気がつくのですが、厄介なのは、複数人で扱うファイルである場合、特性を理解していない人が入力作業にが混じったりすると、文字列・数値と統一されていないと、ほんとにエラーなのか、そうでないのか判断できなくなってしまいます。さらに、IFERRORなどの関数で、エラー処理をしていると、ほとんど気づきません。私もこれで何度かハマっています。

解決作としては、VLOOKUP関数とIFERROR関数で、数値と文字列どちらも検索するようにするのが良いかと思います。

たとえば、A1セルに検索値があり、検索範囲がC:Zで4列目を完全一致で検索する場合で、A1は4桁とします。(0001〜9999 もしくは 1〜9999のいずれか) この場合の式は=IFERROR(VLOOKUP(A1*1,CZ,4,FALSE),VLOOKUP(TEXT(A1,”0000″,CZ,4,FALSE))

として、A!の検索値に1をかけることで文字列であった場合は文字列が数値になります。検索範囲が数値であれば検索されます、そして文字列であってエラーが返された場合は、エラー処理で、TEXT(A1,”0000″)で文字列として検索しますので、検索されます。この式で、エラー(#N/Aは)の場合は、本当に検索できなかったことになります。

サンプルはこちら 文字列・数値

ちなみに、#N/AはNOT ASSIGN = 割当なしが正解です。たまに、NO ANSWER とか NOT AVAILABLE とか勝手に諸説でていますのでご注意ください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です