Chiquilin Site■14.03.09_Excel:検索結果が空白の時に空白を返す2

その1:該当する値がない時の対応
その2:結果が空白だった時の対応
その3:検索結果のデータの型を合わせる
ChiquilinSite

はじめに。このページは Excel2013以上であることを前提としています。古いバージョンの方は「検索結果が空白の時に空白を返す1」を参考にして下さい。検索結果が空白の時に空白を返す方法については色々方法がありますが 検索範囲のデータの型が雑多な場合 最低でも1回余分な計算を入れる必要がありました。今回は極力同じ計算を避ける方向で考えてみます。

その1:該当する値がない時の対応

Excel2003以下の場合はISERROR関数で検索結果がエラーかどうかを一度チェックしたり COUNTIF関数で該当する値がないか数えたりする必要がありましたが Excel2007で追加されたIFERRORを使うことでエラー対策の為に二度手間をかける必要がなくなりました。
■F3セル:
 =IFERROR(VLOOKUP(E3,B$3:C$8,2,FALSE),"")
 F5セルまでオートフィルコピー
これでエラー対策自体は簡素になりました。
ページの一番上へ

その2:結果が空白だった時の対応

しかしワークシート関数はブランクを返すことはできない為 検索結果としては「""(空白文字列)」を返すしかありません。検索結果が文字列しかない時は「=VLOOKUP(……)&""」のようにしてやれば良いのですが
■F3セル:
 =ISERROR(VLOOKUP(E3,B$3:C$8,2,FALSE))&""
結果に数値が混じっている時は「結果が空白だった時」「該当する値がなかった時」「問題ない時」で3回計算しないと全部の条件を満たすことができませんでした。
■F3セル:
 =IF(COUNTIF(B$3:B$8,E3)=0,"",IF(VLOOKUP(E3,B$3:C$8,2,FALSE)="","",
VLOOKUP(E3,B$3:C$8,2,FALSE)))
そのエラー対策と空白対策を一緒に行う方法(下記)を前回は提示しました。
■F3セル:
 =IF(ISERROR(1/LEN(VLOOKUP(E3,B$3:C$8,2,FALSE))),"",VLOOKUP(E3,B$3:C$8,2,FALSE))
多少はましですが これでも結局2回同じ計算をする必要があります。
ページの一番上へ

その3:検索結果のデータの型を合わせる

今回は Excel2013で追加された FILTERXML関数を使います。本来Web上のXML形式のデータから特定のパスの情報を取り出すことを目的にした関数ですが、上手くデータを作ってやれば文字列に対しても使えます。この関数の特徴は取りだすデータが文字列なら文字列を。数値なら数値を返すことです。つまり文字列の数字も数値にして結果を返してくれます。
■F3セル
 =IFERROR(FILTERXML("<a>"&VLOOKUP(E3,B$3:C$8,2,FALSE)&"</a>","//a"),"")
 F5セルまでオートフィルコピー
以上。本当はもっと幅広い用途で使える関数なので 2013以上なら使わないと損です。
→参考ファイル(052.xlsx)
ページの一番上へ
ChiquilinSite トップページへ  Copyright(C) Chiquilin_site. All Rights Reserved.
inserted by FC2 system