• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル関数で検索地の空白を無視して検索したい)

エクセル関数で検索地の空白を無視して検索したい

このQ&Aのポイント
  • エクセル関数を使用して、電話番号と一致する住所を検索する際に、空白を無視する方法やセル内の文字列のみを対象に検索する方法が知りたいです。
  • シート1には電話番号、住所、動物の種類が記載されており、シート2でVLOOKUP関数を使用して電話番号に一致する住所を検索しています。しかし、電話番号のセルに空白がある場合に正しく検索できません。
  • 具体的な問題として、シート2のA2の欄にある資料から電話番号をコピーすると、番号の後に空白スペースがコピーされてしまい、VLOOKUP関数がエラーを出します。空白を無視して検索する方法を知りたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 尚、やむを得ない事情により、空白スペースを削除する訳には行かない場合において、もし、Sheet1のA列の方に入力されている電話番号には空白スペースが入っていないという事でしたら、次の様な方法もあります。 【空白スペースが電話番号の前か後ろのみに付いているだけで、電話番号の途中に空白スペースが挟まっている事は無い場合】 =VLOOKUP(TRIM($A1),Sheet1!$A:$A,2,FALSE) 【電話番号の途中に空白スペースが挟まっている事もある場合】 =VLOOKUP(SUBSTITUTE(SUBSTITUTE($A1," ",)," ",),Sheet1!$A:$A,2,FALSE)  尚、もしも、空白スペースが入っている理由が、単に「電話番号がセル内に表示される位置を左詰めや中央揃えにしたい」というだけの事である場合には、それはやむ得ない事情とは言えません。  その様な場合には、空白スペースを削除してしまった上で、セルの書式設定の配置を[左詰め]や[中央揃え]にするのが一般的なやり方です。

その他の回答 (5)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.6

 もし、空白スペースが電話番号の後ろにのみ付いていて、電話番号の途中に空白スペースが挟まっている事は無い場合には、次の様な方法もあります。 =VLOOKUP(TRIM($A1)&IF(COUNTIF(Sheet1!$A:$A,TRIM($A1)&" *")," *",IF(COUNTIF(Sheet1!$A:$A,TRIM($A1)&" *")," *","")),Sheet1!$A:$C,2,FALSE)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.5

 尚、Sheet1のA列に入力されている電話番号の中にも空白スペースが含まれているものがあり、尚且つ、処理が重くなる事は避けたい、という場合には、関数を使用して一旦、別の列に空白スペースを削除した電話番号を表示させておき、その新たに表示させた空白スペース抜きの電話番号を使用して、検索を行う様にします。  この様に、検索等の情報処理が行い易い様にするために使用する列の事を作業列と言います。  今仮に、Sheet3のA列を作業列として使用するものします。  まず、Sheet3のA1セルに次の様な関数を入力して下さい。 =SUBSTITUTE(SUBSTITUTE(INDEX(Sheet1!$A:$A,ROW())," ",)," ",)  次に、Sheet3のA1セルをコピーして、Sheet3のA2以下に(Sheet1において電話番号の表として使用されている最下段の行を上回るのに十分な行数となるまで)貼り付けて下さい。  その上で、Sheet2のB1セルには次の様な関数を入力して下さい。 =INDEX(Sheet1!$A:$C,MATCH(SUBSTITUTE(SUBSTITUTE($A1," ",)," ",),Sheet3!$A:$A,0),2)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.4

 配列数式は処理が重くなってしまうため、前に投稿した回答No.1や回答No.2では御勧めしなかったのですが、もし、配列数式の様な処理が重くなってしまう方法でも構わないという場合には、SUMPRODUCT関数を使用するという方法もあります。 (こちらは、配列数式ではなく通常の関数ですので、「Ctrl+Shift+Enter」は不要です) 【空白スペースが電話番号の前か後ろのみに付いているだけで、電話番号の途中に空白スペースが挟まっている事は無い場合】 =INDEX(Sheet1!$A:$C,SUMPRODUCT((TRIM(Sheet1!$A$1:$A$3)=TRIM($A1))*ROW(Sheet1!$A$1:$A$3)),2) 【電話番号の途中に空白スペースが挟まっている事もある場合】 =INDEX(Sheet1!$A:$C,SUMPRODUCT((SUBSTITUTE(SUBSTITUTE(Sheet1!$A$1:$A$3," ",)," ",)=SUBSTITUTE(SUBSTITUTE($A1," ",)," ",))*ROW(Sheet1!$A$1:$A$3)),2)

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.3

>A2の欄にある資料から電話番語をコピーすると、番号の後に空白スペースがコピーされてしまうためエラーが出てしまう。 >※空白を無視して検索することはできませんか。 検索値の前後に空白(半角/全角)があるときはTRIM関数で両端の空白を除けば正常に検索できます。 =VLOOKUP(TRIM(A1),シート1!A$1:A$3,2) → 東京都 =VLOOKUP(TRIM(A2),シート1!A$1:A$3,2) → 神奈川県 範囲のキー列の文字列の右側に空白があるときはTRIM関数で処理しなくても無視されます。 左側に空白があるときはTRIM関数で処理する必要があります。 =VLOOKUP(TRIM(A1),TRIM(シート1!A$1:A$3),2) → 東京都 この時、TRIM関数の返り値は配列値を必要とするため、式を入力後Ctrl+Shift+Enterで確定します。 尚、シート名とセルの間に ! を忘れないようにしてください。 また、式を他のセルへコピーするときはセルのアドレスを絶対アドレスと相対アドレスを使い分けるようにしてください。 今回の例では範囲のA1:A3をA$1:A$3とすることで下へコピーしても範囲が固定されますので正確に処理されます。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.1

 空白スペースが入っている事が問題になっているのでしたら、A列に入力されている空白スペースを全て削除してしまえば良いと思います。  その際、一々、1セル毎に削除して行ったのでは手間が掛かり過ぎますので、次の様な操作を行う事で、A列に入力されている空白スペースを一括して削除されては如何でしょうか。 A列全体をまとめて範囲選択   ↓ [Ctrl]キーを押しながら[H]キーを押す   ↓ 現れた「検索と置換」ダイアログボックスの[置換]タブをクリック   ↓ 「検索する文字列」欄に半角の空白スペースを1文字だけ入力   ↓ 「置換後の文字列」欄には(空白スペースも含めて)何も入力されていない状態にする   ↓ 「検索と置換」ダイアログボックスの[すべて置換]ボタンをクリック   ↓ 「検索する文字列」欄に全角の空白スペースを1文字だけ入力   ↓ 「置換後の文字列」欄には(空白スペースも含めて)何も入力されていない状態にする   ↓ 「検索と置換」ダイアログボックスの[すべて置換]ボタンをクリック   ↓ 「検索と置換」ダイアログボックスの[閉じる]ボタンをクリック

関連するQ&A

専門家に質問してみよう