• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excelの関数について教えてください。)

Excelの関数でシートから顧客を検索し表示させる方法を教えてください

このQ&Aのポイント
  • Excelの関数を使って、シートから顧客を検索して表示させる方法を教えてください。
  • シート1にある顧客表から、指定された項目を使ってシート2に該当する顧客を表示させる方法を教えてください。
  • シート2のセルに特定の数値を入力することで、該当するデータがあれば顧客名を表示させ、該当がなければ『該当無し』と表示する方法を教えてください。

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

  • ベストアンサー
回答No.2

別シートから一致データを探すのはVLOOKUP関数を使います。 しかし、VLOOKUP関数で検索できるのは「1つの列のみ」です。 ご質問のように「3つの列が一致した行のデータ」は検索できません。 シート1の顧客表を A B C D              E 1 1 1 =A1&"+"&B1&"+"&C1 企業A 1 1 3 =A2&"+"&B2&"+"&C2 企業B 1 1 4 =A3&"+"&B3&"+"&C3 企業C のようにして下さい。 すると、D列に 1+1+1 1+1+3 1+1+4 のように「3つの列が繋がったデータ」が出来ます。 そして、シート2のA~C列に A B C 1 1 1 1 1 3 1 1 4 と検索データを打ち込んで、D1セルに =IF(ISNA(VLOOKUP(A1&"+"&B1&"+"&C1,Sheet1!$D$1:$E$1000,2,FALSE)),"該当無し",VLOOKUP(A1&"+"&B1&"+"&C1,Sheet1!$D$1:$E$1000,2,FALSE)) と入力して、必要なだけ下方向に「セルのコピー」をして下さい。 VLOOKUP関数の制限により「探すのは、指定した範囲の、一番左の列のみ」なので、シート1のD列、E列は変えられません。 たぶん「D列は今まで通りにして、E列に検索に使用する結合データを追加したい」と思うでしょうが、それは出来ないのです。 なお「1」「1」「1」を連結して「111」にしてはいけません。「1+1+1」のように区切りを入れましょう。 もし「1」「11」「1」と「1」「1」「11」の2種類があったら、単純に連結すると、どっちも「1111」になってしまい、区別できません。

その他の回答 (4)

  • layy
  • ベストアンサー率23% (292/1222)
回答No.5

前回のは見てませんが・・・・。 すぐに役立つエクセルVBAマクロ集 http://www.asahi-net.or.jp/~zn3y-ngi/ EXCELでお仕事 http://www.asahi-net.or.jp/~ef2o-inue/menu/menu01.html 回答待ち時間の間、こういうサイトを見て予習しておいてください。 似たようなことができるサンプルくらいあるのではと思います。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

質問者はデータベース的なことを少し勉強すべきです。それは1-1-1が複数行に現れるかどうか(それが解決方法の死命を制する)ことを知らないようだから。 該当が複数の場合はSQLなどを使うアクセスなどでは普通に出来る(Excelもその機能は使えるが関数ではない) 該当が複数ある場合のニーズは、抜き出し問題としてこのコーナーに類似質問は結構多くある。 ここでは1つしか該当が無いものとしよう。 関数では検索に使えるは、VLOOKUP(またはMATCH関数)程度しかない。 しかしVLOOKUP関数は(1)1列の値としか照合しない(2)見つかった最初の行のものしか返さないので、((2)は該当が1つのときしか使えない理由である)、(1)の関連で1列に3列の値を合成した列を関数(&演算子)でつくり、検索値の3つの指定の値も、合成したセル(の列)を新たに作らないといけない。 関数でやるから、こういうことにな。 3列の値の合成を&でやると、1つの文字列になるので注意のこと。 それについて3列の値の文字列の長さを統一して結合しないとおかしなことになるのは判りますか。 1と12と32->単純にやると11232だがこれはダメ。 △11232(△は1スペース)のような関数による作り方をすべきです。 3列各列の値が1桁(かつ空白なし)なら問題は無いが。

回答No.3

E1セルに =A1*10^6+B1*10^3+C1 フィルハンドルダブルクリック E列非表示 J1セルに =A1*10^6+B1*10^3+C1 =IF(ISNA(MATCH(G1*10^6+H1*10^3+I1,E:E,0)),"該当なし", INDEX(D:D,MATCH(G1*10^6*H1+10^3+I1,E:E,0))) G:J列を切り取って別シートへ貼り付け 添付図参照、VLOOKUP関数はINDEX/MATCH関数で代用できます。 ちなみに1行目はタイトル行を使ったほうが並べ替えや抽出ができるので便利ですよ

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

補足をお願いします。 ・顧客表のA列には、企業名称と大番号(入力時の先頭番号の意)が合成されているのでしょうか。 ・又、大番号は最大何ケタまで設定されているのでしょうか。 ・顧客表の検索用に新たな列を挿入が可能でしょうか。

関連するQ&A