- ベストアンサー
Excel2007 検索値の桁数を減らして検索
- Excel2007で検索値の桁数を減らして検索する方法を教えてください。
- 検索先の表には短縮された文字で登録されており、フル(4桁)で見つからなければ、3桁、2桁、1桁と順に減らして検索を行いたいです。
- また、検索先が検索値の左端から始まるとは限らず、ワイルドカードを使いたいと思っています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
=IFERROR(VLOOKUP("*"&A1&"*",Sheet1!$A$1:$C$100,3,FALSE) ,IFERROR(VLOOKUP("*"&LEFT(A1,3)&"*",Sheet1!$A$1:$C$100,3,FALSE) ,IFERROR(VLOOKUP("*"&LEFT(A1,2)&"*",Sheet1!$A$1:$C$100,3,FALSE) ,IFERROR(VLOOKUP("*"&LEFT(A1,1)&"*",Sheet1!$A$1:$C$100,3,FALSE) ,"NA")))) みたいな。
その他の回答 (2)
- bunjii
- ベストアンサー率43% (3589/8249)
先頭から何桁目まで一致するかをチェックする場合は次の数式で良いと思います。 A列が検索値、B列とC列が検索範囲としてVLOOKUP関数を使う方法です。 A1=IF(COUNTA($A1),IFERROR(VLOOKUP(LEFT($A1,4)&"*",$B:$C,2,FALSE),IFERROR(VLOOKUP(LEFT($A1,3)&"*",$B:$C,2,FALSE),IFERROR(VLOOKUP(LEFT($A1,2)&"*",$B:$C,2,FALSE),IFERROR(VLOOKUP(LEFT($A1,1)&"*",$B:$C,2,FALSE),"")))),"") 検索値が3桁以下のときB列の文字列にA列の先頭から3桁が含まれている(桁位置浮動)ことも含める場合は検索値の先頭にワイルドカードの"*"を付加してください。 Excel 2007以降のバージョンではIFERROR関数が使えますので、これを使って入れ子構造にすると効率的になります。 1番外側のIF関数はA列に検索値の文字列が入力されていないときのチェック用です。
お礼
COUNTIFまでご配慮頂けてありがとうございます。仰るようにIFERRORのほうが1つカッコが減ることで分かりやすいと理解出来ました。
- Cupper-2
- ベストアンサー率29% (1342/4565)
必要な回数だけIF関数を繰り返せば良いと思います。 あるいは文字数の数だけ検索する関数式を並べる。 D1セルに検索する文字を入力して、D1セルの値から1文字ずつ削った文字をD2セルからD5セルで検索・・・など。
お礼
仰る通り、繰り返せばいいと思っていたのですが、うまく作れませんでした。 でも方向性が正しいことは理解できました。ありがとうございます。
お礼
ありがとうございます。この数式を自分用に変えたら成功しました。どうやら自分でISERRORについて勘違いをしていたようです。これからはIFERRORを使ってみたいと思います。