• ベストアンサー

エクセルでフィルターかけたデータをVLOOKUP

エクセルのフィルター機能について質問です。 フィルターかけて絞り込んだデータをVLOOKUPの範囲に指定したいです。 しかし、やってみるとフィルターかけて絞り込む前の全てのデータが範囲になってしまいます。 問題を解決する方法はありませんか?

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

  • ベストアンサー
noname#212067
noname#212067
回答No.3

はじめまして、こんにちは 「フィルターかけて絞り込んだデータをVLOOKUPの範囲に指定したいです。」ということですね データが範囲は、返られませんが フィルタで選択している行とそうでない行の差異をVLOOKUP関数に教えることによって、結果的に 絞り込んだデータの範囲とすることができます。 以下の表で、フィルタ範囲は「A3~G3」だとします。 「A1」には、手入力で「A」が入力されています。 「B1」には、VLOOKUPで検索した「G4」の内容が表示されています。 フィルタをかけ、「コード1」で絞り込むと、「コード1」に対応する「金額」が「B1」に表示されます 式 「B1」の式は「=VLOOKUP("1" & A1,B4:G12,6,FALSE)」 フィルタで選択された行「D4」が「1」だけを検索させる 「B4」の式は「=D4&F4」は「FLAG」+「コード2」 「D4」の式は「=SUBTOTAL(2,C4)」はフィルタで選択された行は「1」が表示される。 他は、値が入っています。 基本形だけなので、細かいエラーチェックは、追加してください。 ■■■■A■■■B■■■■C■■■D■■■■E■■■■■■■F■■■■■■■■G 1■■■■A■■■1 2 3■■■■NO■■KEY■■■DUMMY■FLAG■■■コード1■■■コード2■■■■金額 4■■■■1■■■1A■■■1■■■1■■■■■AAAAA■■■■A■■■■■■■■1 5■■■■2■■■1A■■■1■■■1■■■■■BBBBB■■■■A■■■■■■■■2 6■■■■3■■■1A■■■1■■■1■■■■■CCCCC■■■■A■■■■■■■■3 7■■■■4■■■1A■■■1■■■1■■■■■DDDDD■■■■A■■■■■■■■4 8■■■■5■■■1A■■■1■■■1■■■■■EEEEE■■■■A■■■■■■■■5 9■■■■6■■■1A■■■1■■■1■■■■■FFFFF■■■■A■■■■■■■■6 10■■■■7■■■1A■■■1■■■1■■■■■GGGGG■■■■A■■■■■■■■7 11■■■■8■■■1A■■■1■■■1■■■■■HHHHH■■■■A■■■■■■■■8 12■■■■9■■■1A■■■1■■■1■■■■■IIIII■■■■A■■■■■■■■9 13■■■■END

ladybaby
質問者

お礼

回答者様の知識の深さが滲み出るお答えでした。非常に勉強になります。 具体的なアドバイスめちゃくちゃ助けになりました。感謝してもしきれない位ですo(^-^)o

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

たとえば =VLOOKUP(検索値,A1:B100,2,FALSE) のような計算をしていたとすると。 =IF(検索値="","",INDEX(B1:B100,MATCH(検索値,IF(SUBTOTAL(3,INDIRECT("A"&ROW(A1:A100))),A1:A100,""),0))) と記入して,必ずコントロールキーとシフトキーを押しながらEnterで入力すると,できます。 必ずまずまっさらのエクセルシートに練習用にサンプルデータを作ってキチンと計算できることを確認してから,本番で行ってみてください。

ladybaby
質問者

お礼

とっても参考になる回答をありがとうございます(^O^)感謝感激です 試しにやってみました。希望の光が見えました(^∀^)ノ

すると、全ての回答が全文表示されます。
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

例えば次のようにいてはどうでしょう。 一度こちらの提案通りで操作をしてみてください。その後にご自分のケースに当てはめて応用してみてください。 例えばA1セルには氏名の性の文字があり、下方に性のデータが有るとします。B列にはB1セルに年齢の文字があり下方にデータが有るとします。C列にはC1セルに金額などの文字があり下方にデータが有るとします。 そこでフィルターをB列を重点にして行い、例えば50歳の人を選択したとします。その選択をされた状態でA列で木村の人の金額を表示させるとします。その場合には次のように作業列を作って対応します。 D2セルには次の式を入力して下方にドラッグコピーします。 =IF(SUBTOTAL(3,A2)>0,A2,"") そこでVLOOKUPの代わりにMATCH関数を使ってC列の数値を表示させるとしたら次のようにします。 =INDEX(C:C,MATCH("木村",D:D,0)) このことにより木村がもっと若い年齢の人がいる場合でも50歳でフィルターを掛けて最初にA列で木村の人の金額を表示させることができます。

ladybaby
質問者

お礼

回答感謝です!!めっちゃ参考ににりました。お知恵を活用します☆ 世の中にはおやさしい方がいるものですねo(^-^)o会社の先輩より百倍聞きやすいです!

すると、全ての回答が全文表示されます。

関連するQ&A