- ベストアンサー
Vlookup(初心者)での質問です。シート1には、客先IDNoがA列
Vlookup(初心者)での質問です。シート1には、客先IDNoがA列、B列にそれに該当する客先名があります。これをシート2へいれたいのですが、シート2は、シート1から抜粋された客先名があります。(シート2:E列)F列に該当するIDをシート1から引用し入力たいのです。 何度か試したのですが、エラーが出てしまいます。名前が(株)が株式会社だったり、抜けていたりあいまいなものもは検索できないのでしょうか?シートが別だと検索できないのでしょうか?急いでおりますだなたか教えて頂けないでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは! 外していたらごめんなさい。 ↓の画像で左側がSheet1・右側がSheet2です。 Sheet2のE1セルに検索したい顧客名の一部でも入力すると、その文字が含まれるSheet1のデータをSheet2に表示するようにしてみました。 Sheet1に作業用の列を設けています。 作業列C2セルに =IF(Sheet2!$E$1="","",IF(ISNUMBER(FIND(Sheet2!$E$1,B2)),ROW(),"")) という数式を入れ、オートフィルで下へずぃ~~~!っとコピーします。 そして、Sheet2のE4セルに =IF(COUNT(Sheet1!C:C)<ROW(A1),"",INDEX(Sheet1!A:A,SMALL(Sheet1!C:C,ROW(A1)))) F4セルに =IF(E4="","",VLOOKUP(E4,Sheet1!A:B,2,0)) という数式を入れ、E4・F4セルを範囲指定しF4セルのフィルハンドルで下へコピーすると 画像のような感じになります。 これでSheet2のE1セルに1文字でも検索したい顧客名の文字を入力すると その文字が含まれるデータが表示されると思います。 以上、長々と書いてしまいました。 参考になれば良いのですが、 的外れならごめんなさいね。m(__)m
その他の回答 (2)
こんにちは。 MATCH関数では、検索値にワイルドカード('*'や'?')を使用することができます。 従って、 検索する文字列が、『含まれている』文字列のセル を検索することができます。 例えば、 検索文字列= "*あああ*" とした場合、 あああ株式会社 (株)あああ などが一致対象になります。 ※複数あれば、最初に一致したセル位置が検索結果となります。 ただし、 検索文字列= "*ああ*" とした場合、 あああ株式会社 ああ株式会社 (株)ああい (株)いああ なども、一致対象になります。 ですので、検索文字列の記述には注意が必要です。 以上を踏まえて、今回のケースで、MATCH関数にワイルドカードを使用した 数式の例を記載します。 注1)以下の例では、シート2に1列追加し、検索結果として、シート1に登録 してある客先名(登録名)を表示しています。 注2)ワイルドカードを使用しているため、上記例のように一致対象が複数に なる場合があります。 ■シート構成(例) <シート1> ・・・ シート名= Sheet1 A B 1 客先ID No. 客先名(登録名) 2 00001 株式会社あああ 3 00002 (株)いいい 4 00003 (有)ううう : : : ◎A列 ・データ形式: 数値(※ここでは文字列ではないものとします) ・書式設定 : 表示形式 ⇒ ユーザー定義 ⇒ 00000 <シート2> ・・・ シート名= Sheet2 E F G 1 客先名(検索名) 客先ID No. 客先名(登録名) 2 いいい (数式) (数式) 3 けけけ (数式) (数式) 4 あああ (数式) (数式) : : : : ◎E列 ・ここに検索する客先名(客先名の一部でも可)を入力します。 ◎F列 ・ここに数式(後述参照)を設定します。 ・書式設定 : 表示形式 ⇒ ユーザー定義 ⇒ 00000 ◎G列 ・ここに数式(後述参照)を設定します。 ・シート1に登録してある正式な客先名を表示させます。 ※シート構成については、添付画像もご覧下さい。 (貼れていなかったり、見辛かった場合はすみません。) ■設定数式 上記のシート構成だった場合で、シート2のF列、及び、G列に設定する数式を 以下のように設定します。 ※下記数式は、あくまで一例です。 ◎シート2:F列の数式 <F2セルの場合> =IF($E2="","",IF(ISERROR(MATCH("*"&$E2&"*",Sheet1!$B$2:$B$65536,0)),"", INDEX(Sheet1!$A$2:$A$65536,MATCH("*"&$E2&"*",Sheet1!$B$2:$B$65536,0)))) ※上記数式は、表示の都合上2行で記述していますが、実際の入力の際には、 1行で記述して下さい。 ※セル名の参照形式(相対参照、絶対参照)の違いに注意して下さい。 ※ご使用のシートで、シート名、セル名(列、行)などが違っている場合は、シートに 合わせて適せん変更して下さい。 ※F列の3行目以降のセルには、F2セルをコピーして、ドラッグによるオートフィルなど の操作で数式をコピーして下さい。 ◎シート2:G列の数式 <G2セルの場合> =IF($E2="","",IF(ISERROR(MATCH("*"&$E2&"*",Sheet1!$B$2:$B$65536,0)),"", INDEX(Sheet1!$B$2:$B$65536,MATCH("*"&$E2&"*",Sheet1!$B$2:$B$65536,0)))) ※上記数式は、表示の都合上2行で記述していますが、実際の入力の際には、 1行で記述して下さい。 ※セル名の参照形式(相対参照、絶対参照)の違いに注意して下さい。 ※ご使用のシートで、シート名、セル名(列、行)などが違っている場合は、シートに 合わせて適せん変更して下さい。 ※G列の3行目以降のセルには、G2セルをコピーして、ドラッグによるオートフィルなど の操作で数式をコピーして下さい。 以上です。
お礼
大変遅くなりましてスミマセン。 ありがとうございました。
- soixante
- ベストアンサー率32% (401/1245)
データがそれぞれ2行目から100行目まで入ってるとします。 シート2のF2セルに =INDEX(Sheet1!$A$2:$A$100,MATCH(Sheet2!E2,Sheet1!$B$2:$B$100,0),1) と入れて、下まで引っ張る。 なお、基本的に相手はパソコンですから、あいまいなことに対する対応は求めてはいけません。 (株)と株式会社 が同じと分かるのは人間だからです。 あいまいさの程度に応じて対処法が変わります。
お礼
ありがとうございました。試してみましたがやはり名前が一致しないとだめなようですね。 MATCHを使うとは知りませんでした。助かりました。
お礼
大変遅くなりましてスミマセン。 ありがとうございました。