プチIT化

【Excel】vlookupで「~」(チルダ)が使えない?!対処と原因

こんにちは、わたあめです。先日、vlookup関数を使っている時に「~」(半角チルダ)が使えないことに気付きました。使えないというか、検索値に「~」があると検索結果が「#N/A」になってしまったのです。

わたあめ
わたあめ
なんで?!どうしたらいいの?!

となったので、今回はvlookupで「~」が使えない原因と対処法を紹介したいと思います。それでは、いってみましょう!

対処法:「~」は「~~」と記載する

解決方法としては、「~」を「~~」と記載すればOKです。※チルダが半角の場合のみの話です。具体的な例を示していきますね。

基本的なvlookup関数の使い方を復習しておきましょう。

=VLOOKUP(検索値, 検索範囲, 列番号, 検索の型)

例えば「9:00~10:00」という時間を検索するとしたら、こんな使い方したくなりますよね。

=VLOOKUP("9:00~10:00", A1:B5, 2, FALSE)

これでは残念ながら"9:00~10:00"という文字列を検索(一致)できません。ここでいう検索値は"9:00~10:00"なのですが、ここの書き方を以下のように少し変えるだけで状況は解決します。

=VLOOKUP("9:00~~10:00", A1:B5, 2, FALSE)

たったこれだけの手順なのですが、ここには深い理由があっての書き方だったのです。なぜ半角チルダがうまく検索できなかったのか、次章に原因を記載していきます。気になる方は読んでみてください。

原因:~はワイルドカードのエスケープ文字だから

検索値に「~」半角チルダを指定すると機能しなかった原因は、「~」がExcelのワイルドカードのエスケープ文字だったからです。

わたあめ
わたあめ
ワイルドカード?エスケープ文字?!

なんだか横文字がならんでしまって意味が分からなくなってしまいましたかね?!各用語について簡単に解説していきます!

ワイルドカードとは

ワイルドカードとは特殊文字のことです。Excelでは「?」(半角クエスチョンマーク)・「*」(半角アスタリスク)がワイルドカードとして使われています。どんなふうに特殊な使われ方がされているかと言うと…

?任意の一文字を表す
*任意の文字列を表す(0文字でも何文字でも!)

例で言うと例えば、「?田」と記載すると”田”の前に一文字何かある文字列を指します。「太田」「新田」「桜田」などが該当します。「*田」と記載すると、*は何文字でもOKなので、「田」「山田」「久保田」「下仁田」などが該当します。

エスケープ文字とは

わたあめ
わたあめ
「~」はワイルドカードではないんだ?!

と思われた方がいるかもしれません。Excelで「~」半角チルダは、エスケープ文字と言って、「この後の文字はワイルドカードではありません!」とExcel側に教えるための特殊文字なのです。「~」に続く文字はワイルドカードではなく文字列で扱ってねという宣言のようなものです。

ですので、Excelの中の特殊文字である「?」や「*」や「~」を検索値などの文字列としてExcelに認識させたい場合に「~?」「~*」「~~」と記載します。「~」は「~~」と記載するという特別扱いの真相でした!

他の対処方法:半角を全角にする

他の対処方法として、検索できないワイルドカードの半角文字を全角に置換したり、あらかじめ半角「~」「?」「*」は全角で入力するというルールで運用したりするのも良いかもしれませんね!

ちなみに、置換の時も「~」半角チルダなどは検索できないので、検索する文字には「~~」「~?」「~*」といった具合で指定してみてください。

さいごに

いかがだったでしょうか。上手くいかなかった方は解決できたでしょうか?少しでもお役立ち記事になっていれば幸いです。それでは、また!

flier(フライヤー)