Q&A

回答の並べ替え:
投稿新規に質問を投稿する

VLOOKUPでの前ゼロの扱い

umemura umemura

2019-10-15 16:46

CELFでVLOOKUPを使って「0016」という値を、「00016、0016、016、16」という値の範囲から検索すると、いずれも一致してしまいます。

おそらく内部的に数値に変換して前ゼロが落ちてしまうのだと思いますが、
厳密に「0016」だけと一致させるにはどうすればよいでしょうか。

「0A」のような文字であれば大丈夫なのですが、、、

新日本コンピュータマネジメント株式会社 新日本コンピュータマネジメント株式会社 パートナー
コードの入力桁数が4桁などの決まりがあれば、
頭0埋めと、先頭に"_"を付与する事で文字列として扱われる様にした上で、
VLOOKUPを使う事で回避する方法があります。

黄色背景のセルをキー値として利用し、VLOOKUP参照エリアのコード値に"_"を付与したC列を追加して、参照する様にしております。

別の事象ですが、15桁以上の大きな数字でも、内部的に浮動小数点表記になる事で近似値もヒットしてしまい、別の値を返す事がありました。
その際も、先頭に"_"を付与する事で回避しました。

メールコンタクトをとる
umemura umemura
回答ありがとうございます。

書式を文字列にしても、「16」しか範囲に無い場合に検索値が「0016」だとヒットしてしまいました。
コードの存在チェックをしたいのですが、これだと、マスタには「16」しかないのに、入力値が「0016」でも「000000016」でもチェックエラーにならずに登録できてしまう為、
厳密に比較したいです。
IF式でも「=IF("16"="0016","OK","NG")」 がOKと表示されるので厳しいのでしょうか、、、
新日本コンピュータマネジメント株式会社 新日本コンピュータマネジメント株式会社 パートナー
画像の通り、A3を文字列にしておけば正しく取得はできました。
ただ、VLOOKUPで参照する表についても不安なので、開発時には文字列にしております。
メールコンタクトをとる
Yexiongmao Yexiongmao
こんにちは。

上の例では、N24が文字列であれば問題ないようです。