• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VLOOKUPで抽出したデータのプルダウンリスト)

VLOOKUPで抽出したデータのプルダウンリスト

このQ&Aのポイント
  • VLOOKUP関数を使って抽出したデータをプルダウンリストにする方法について調べました。抽出元のデータは変更できないため、条件に合う方法が見当たりませんでした。
  • VLOOKUP関数を使って抽出したデータが複数の場合に、それらのデータをすべて表示する方法について調べました。現在の形式では重複データが縦に並ぶと表が壊れてしまうため、適切な方法が見つかりませんでした。
  • VLOOKUP関数を使って抽出したデータの中に重複がある場合、それを確認する方法について調べました。最悪の場合、抽出元のデータで重複が確認できますが、他の方法は見つかりませんでした。

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

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

回答No1です。 どうなのか良くわかりませんが抽出元のシートをシート2としてA1セルからD1セルにかけて名前、内線番号、部署、役職の文字がそれぞれ入力されており下方にそれぞれのデータが入力されているとします。 作業列としてE列には名字のみを入力します。F2セルには次の式を入力して下方にドラッグコピーします。 =IF(E2="","",IF(COUNTIF(E$2:E2,E2)=1,ROUNDUP(MAX(F$1:F1),-2)+101,INDEX(F$1:F1,MATCH(E2,E$1:E1,0))+COUNTIF(E$1:E1,E2))) そこでプルダウンを作るシートはシート1としてA1セルには名字の文字が下方に名字を入力するとします。 B列はプルダウンとしますがそれに先立って作業列を用意します。 例えばJ2セルには次の式を入力してX2セルまで横にドラッグコピーしたのちに下方にもドラッグコピーします。 =IF($A2="","",IFERROR(INDEX(Sheet2!$A:$A,MATCH(INDEX(Sheet2!$F:$F,MATCH($A2,Sheet2!$E:$E,0))+COLUMN(A1)-1,Sheet2!$F:$F,0))&INDEX(Sheet2!$B:$B,MATCH(INDEX(Sheet2!$F:$F,MATCH($A2,Sheet2!$E:$E,0))+COLUMN(A1)-1,Sheet2!$F:$F,0))&INDEX(Sheet2!$C:$C,MATCH(INDEX(Sheet2!$F:$F,MATCH($A2,Sheet2!$E:$E,0))+COLUMN(A1)-1,Sheet2!$F:$F,0))&INDEX(Sheet2!$D:$D,MATCH(INDEX(Sheet2!$F:$F,MATCH($A2,Sheet2!$E:$E,0))+COLUMN(A1)-1,Sheet2!$F:$F,0)),"")) その後にB2セルから下方の行を範囲として選択し、「データ」タブの「データの入力規則」から入力値の種類で「リスト」を選択し元の値の窓には次の式を入力してOKします。 =$I2:$X2 J2セルからの範囲とした場合にはリストの表示が必ずしも先頭から並ぶことになりません。 これでB列のリストには氏名から役職までが一気に表示されますので、その中から選択すればよいでしょう。B列の幅を出来るだけ大きくすればよいでしょう。

tact-mori
質問者

お礼

ありがとうございます。 動きました。 まだまだ覚えたてで、数式の意味はまだ理解できませんが、 勉強して自分でも式を作れるようにがんばります。 本当に助かりました。 ありがとうございます。

その他の回答 (1)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

抽出元のデータシートの離れた列に作業列を作ることもできない、プルダウンを作るシートにも作業列を作ることもできないでは方法を考えることもできません。マクロを使って何とか処理できるとしてもダブル可能性のある姓がどの程度の数になるのかによっても対応は変わりますね。 担当の名字が入力される行数はどの程度になるのでしょう。 最悪重複データが有ることが分かればということでしたら、例えばシート1のA列に名字を入力するとしてB列にはVLOOKUP関数で氏名をシート2のA列から表示させるとした場合では次のようにすればよいでしょう。 B列を選択してから「ホーム」タブの「条件付き書式」の「新しいルール」を選択します。 表示の画面で「数式を使用して…」を選択したのちに数式の窓には次の式を入力します。 =AND(A1<>"",COUNTIF(Sheet2!A:A,"*"&A1&"*")>1) その後に「書式」から「塗りつぶし」のタブで黄色などを設定してOKします。 そうすることで入力した名字の名前がシート2のA列に複数有る場合にはB列のセルに黄色が表示されます。

tact-mori
質問者

補足

初心者ですみません。 的を射てない補足かもしれませんが、 よろしくおねがいします。 >抽出元のデータシートの離れた列に作業列を作ることもできない、プルダウンを作るシートにも作業列を作ることもできないでは方法を考えることもできません。 データシートの作業列に関しては、他部署から同期している シートから、必要な箇所を別のシートにコピーすることで解決しました。 プルダウンを作るシートの作業列に関しては、入力用シートと出力用シートを分け、ことで解決できますでしょうか? >マクロを使って何とか処理できるとしてもダブル可能性のある姓がどの程度の数になるのかによっても対応は変わりますね。 重複している姓は現在最大で10名おります。増えることも考えて15名ほど対応できればと思います。 >最悪重複データが有ることが分かればということでしたら、例えばシート1のA列に名字を入力するとしてB列にはVLOOKUP関数で氏名をシート2のA列から表示させるとした場合では次のようにすればよいでしょう。 ありがとうございます。現在この方法で対応しておりますが、 上記の方法で可能でしたらよろしくお願いいたします。 ありがとうございます。

関連するQ&A