こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

エクセルのフィルター機能について質問です。

フィルターかけて絞り込んだデータをVLOOKUPの範囲に指定したいです。

しかし、やってみるとフィルターかけて絞り込む前の全てのデータが範囲になってしまいます。

問題を解決する方法はありませんか?

投稿日時 - 2012-04-13 10:42:20

QNo.7418532

すぐに回答ほしいです

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

はじめまして、こんにちは
「フィルターかけて絞り込んだデータを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

投稿日時 - 2012-04-13 15:08:01

お礼

回答者様の知識の深さが滲み出るお答えでした。非常に勉強になります。

具体的なアドバイスめちゃくちゃ助けになりました。感謝してもしきれない位ですo(^-^)o

投稿日時 - 2012-04-15 22:21:11

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

たとえば
=VLOOKUP(検索値,A1:B100,2,FALSE)
のような計算をしていたとすると。

=IF(検索値="","",INDEX(B1:B100,MATCH(検索値,IF(SUBTOTAL(3,INDIRECT("A"&ROW(A1:A100))),A1:A100,""),0)))
と記入して,必ずコントロールキーとシフトキーを押しながらEnterで入力すると,できます。


必ずまずまっさらのエクセルシートに練習用にサンプルデータを作ってキチンと計算できることを確認してから,本番で行ってみてください。

投稿日時 - 2012-04-13 13:17:42

お礼

とっても参考になる回答をありがとうございます(^O^)感謝感激です

試しにやってみました。希望の光が見えました(^∀^)ノ

投稿日時 - 2012-04-15 22:22:53

ANo.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列で木村の人の金額を表示させることができます。

投稿日時 - 2012-04-13 12:02:11

お礼

回答感謝です!!めっちゃ参考ににりました。お知恵を活用します☆

世の中にはおやさしい方がいるものですねo(^-^)o会社の先輩より百倍聞きやすいです!

投稿日時 - 2012-04-15 22:24:15

あなたにオススメの質問