ついて情報発信しています。VBAプログラムは本当初心者から他のアプリケーションを呼び出して使う上級者的な使い方まで幅広いレベルで解説していきます。VLOOKUPが当たらない現象を防ぐVBAの勉強このブログの記事一覧にもどるTweetVBAで中級から上級にステップアップするシリーズの4回目です。今回はVLOOKUPの検索値と戻り値を調べることで、データの取り扱いに配慮する事について解説します。VBAではなく通常のエクセル関数のVLOOKUPがうまくいかない事例を見てから、エラーの回避に取り組んでいきます。初心者~三段をご参照ください。普通のエクセル関数のVLOOKUPがうまくいかない例まずは普通のエクセル関数のVLOOKUPがうまくいかない例を見ていきましょう。あるはずなのに検索できない良くあるのが検索されるべき値が、検索範囲内にあるのにVLOOKUPが当たらない場合です。これは大きく2つの原因があります。文字数を揃えるためのスペースが入っている書式が合っていない順に解説します。文字列の長さを揃えるためにスペースが挿入されていることがあるイメージとしては下記のような感じです。商品コードのイメージ。実はスペースが含まれている。この会社で使っている商品コードは4桁の英数字であわら割れているように見えます。数式バーをクリックしてみると空白の文字列がある事が分かります。半角スペースが含まれていることを確認する何故このようなことが起きるかというと、このデータは基幹システムからcsvファイルというテキストファイルでダウンロードしたモノをエクセルに保存し直したデータだからです。この会社では商品コードは10桁の商品も存在します。基幹システム内ではすべての商品コードを10桁に揃えて管理している為、4桁の商品コードでは基幹システム内ではスペースで埋めて10桁にしていた、と言うわけです。このような理由で基幹システムからダウンロードしたcsvファイルをエクセルで開くと、空白のスペースがそのまま空白で残っているのでした。この状態でVLOOKUPを当ててもうまくデータが検出できません。VLOOKUPが当たらずに失敗している販売単価をVLOOKUPで貼り付けようとしましたが、失敗しました。この販売単価の表は人が手作業で作成したので、商品コードに余計なスペースが入っていません。文字数を揃えるためのスペースの削除を行う通常のエクセル作業としては、商品コードの部分に対して、データ⇒区切り位置を選択し、区切り文字にスペースを選択すれば、スペースが無くなり、VLOOKUPを当てることができます。VBAではスペースを空白の文字列""で置き換える事で簡単に実現できます。配列をマスターしている人であればSplit関数で空白を区切り文字にして0番目の要素で置き換えていっても構いません。SubVLOOKUPの実行結果:成功できました。0でVLOOKUP部分を挟みましょう。値の書式が異なる他にVLOOKUPが当たらない可能性があるのは、値の書式が異なる場合です。上の例で商品コードが文字列のみで成り立つ場合はいいのですが、数値のみで成り立っている商品コードがある場合は注意が必要です。片方が数値、片方が文字列の場合があるためです。検索先の表のみ文字列でVLOOKUPが失敗している文字列に揃えるこの場合は文字列に置き換えます。Cstr関数という関数で文字列に置き換える事ができるのですが、ココが要注意点です。エクセルさんのお気遣いにより、セル内の値が文字列であっても、数値として捉えられる場合は数値として捉えられてしまいます。よって、1セルの書式を標準から文字列に置き換える、2セルの値を文字列に置き換える、という2ステップが必要です。VBAのコードはこのようになります。Subセルの書式を文字列に置き換えた上で値を文字列に置き換えてからVLOOKUP無事にVLOOKUPを当てることができました。今回はVLOOKUPの解説のためにVLOOKUPの直前でスペースを取り除いたり、セルの書式と値を文字列に変更しました。これはVLOOKUPの有無にかかわらず、商品コードのような値の時にはプログラムの冒頭でまとめて行ってしまうのが良いと思います。今回は値の型を変更するときの注意点について解説します。ワークブックにチェック機能をつける今回はVBAで利用できるイベントについて解説していきます。日)1985年生まれの会社員。業務改善部隊に異動で芽を出し、現在に至る。本業での知識と経験を元に、ブログとTwitterで1生産性向上2業務改善3自動化について情報発信しています。【プログラミング】文法の勉強だけでは遠回り|挫折しない上達のコツ月別アーカイブはてなブログをはじめよう!mutable_yunさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。