dポイントプレゼントキャンペーン実施中!

検索関数を使って検索窓を作成したいんですが・・・

仕事でExcelを使っていて他の人に聞いても解決できなかったのでこちらでご質問させて頂きます。

質問内容は検索です。

データの範囲内にある数値、文字など、全てが対象になります。
条件は下記の通りです。
1.検索窓のようなセルに毎回関数など入力せず、文字や数字を入力するだけ。googleなどの検索窓と同じです。
2.検索結果は検索窓の右側に自動的に表示。検索内容を変更した時に自動的に反映される。
3.検索例
例1) 岡田 ←名前だけで検索
例2) 2010/01/20 ←日付で検索
例3) 岡田 A-102W ←名前と型番で検索
例4) 岡* ←ワイルドカードも使用可能
4.データ範囲はシートをまたぐこともあり。


つまり、A1というセルに文字を入力すればその文字に関する情報が一覧表示されるということです。

上記の条件でやりたいんですが、マクロやVBAなどは全くわかりませんので、
エクセルの関数のみで何とかならないでしょうか。

よろしくお願いします。

「検索関数を使って検索窓を作成したいんです」の質問画像

A 回答 (5件)

次のようにしてはどうでしょう。


1行目は項目名でA1セルはNo,B1セルは伝票No、C1セルは日付、D1セルは担当者、E1セルは型番とします。それぞれのデータが下方に入力されているとします。
F列は作業列でF2セルには次の式を入力して下方にオートフィルドラッグします。
=IF(D2&E2=H$2,MAX(F$1:F1)+1,IF($H$4="","",IF(COUNTIF(INDEX(A:E,ROW(),$H$4),$H$2)>0,MAX(F$1:F1)+1,"")))
H1セルには検索と文字を入力しH2セルには検索したい伝票Noや日付、担当者名、型番などを入力します。なお、担当者と型番を組みで検索する場合には担当者名に続けて型番を入力します。
H4セルには次の式を入力します。
=IF(COUNTIF(A:A,H2)>0,1,"")&IF(COUNTIF(B:B,H2)>0,2,"")&IF(COUNTIF(C:C,H2)>0,3,"")&IF(COUNTIF(D:D,H2)>0,4,"")&IF(COUNTIF(E:E,H2)>0,5,"")
お求めの表はJ列からN列に表示させるとして1行目にはA1セルからE1セルまでの文字をコピーします。
J2セルには次の式を入力してN2セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。
=IF(COUNTIF($F:$F,ROW(A1))=0,"",INDEX($A:$E,MATCH(ROW(A1),$F:$F,0),COLUMN(A1)))
これでH2セルに検索したいデータを入力することで、該当するデータがJからN列に表示されます。
なお、作業に使われている列については非表示にする、セルについては文字の色を白にするなどのことをすればスッキリするでしょう。
シートが別にある場合にもご自分で工夫してみてください。
    • good
    • 0
この回答へのお礼

ありがとうございます!
KURUMITOさんに教えてもらったとおりにやったら思い通りのものが出来ました!
別シートは恐らく自分で出来そうです。
本当にありがとうございました。

お礼日時:2010/02/09 11:37

回答No4です。


ワイルドカードを使用する場合には例えば岡の後には半角で*を入力することが必要です。念のため。
    • good
    • 2

Googleの検索のようなものを想定していらっしゃるのでしょうね


マクロを使用すればある程度のことはできます。でも簡単なマクロではありませんし、サンプルで掲載されたシートでマクロを作っても、1行、1列でも実際のシートと異なっていたら、おそらくvinsent100さんが修正するのは無理でしょう。

また
>エクセルの関数のみで何とかならないでしょうか。
とのことですが、それは難しいです。1つのセルに複数の検索条件を入力するのは関数では手に余ります。

では、どうするか?
エクセル本来の機能をできる限り利用しましょう

「データ」→「フィルタ」→「フィルタオプション」でも複合条件でデータ抽出が可能です。関数、マクロが使えないなら、まずエクセルの機能を使いこなして、それでも足りないならまた質問してください。

サンプル画像はフィルタオプションで抽出をかけた例です
複数の条件で抽出ができますし、ワイルドカードも使えます。
まずはフィルタオプションを使いこなせるようになってください
「検索関数を使って検索窓を作成したいんです」の回答画像3
    • good
    • 0
この回答へのお礼

ありがとうございます!
こんなフィルタオプションでも可能なんですね!
一度試してみます。
勉強になりました。

お礼日時:2010/02/09 11:38

No.1です!


たびたびごめんなさい。
前回の方法では
質問にある 例3が希望通りにならないと思います。
あくまで一つのセル内に検索文字がある場合の条件ですので
あまり参考にならないかもしれません。

どうも何度も失礼しました。m(__)m
    • good
    • 0

こんばんは!


参考になるかどうか判りませんが・・・
↓の画像で説明させていただきます。

F列を作業用の列に使わせてもらっています。
作業列F2セルに
=IF($H$2="","",IF(OR(ISNUMBER(FIND($H$2,A2:E2))),ROW(A1),""))
これは配列数式になりますので、この画面からコピー&ペーストしただけではエラーになると思います。
F2セルに貼り付け後、F2キーを押すか、数式バー内で一度クリック、又はF2セルをダブルクリックします。
編集可能になりますので Shift+Ctrl+Enterキーで確定してください。
数式の前後に{ }マークが入り配列数式になります。
このF2セルをオートフィルで下へずぃ~~~!っとコピーします。

そして、I2セルに
=IF(COUNT($F$2:$F$100)<ROW(A1),"",INDEX(A$2:A$100,SMALL($F$2:$F$100,ROW(A1))))
(これは配列数式ではありません)
として、列方向と行方向にオートフィルでコピーすると
画像のような感じになります。
これで、H2セルに検索文字(担当者以外、仮に型番等でもかまいません)を入力すると
H2セルの文字が含まれるものが表に表示されると思います。

尚、数式は100行目まで対応できるようにしていますが
データ量によって範囲指定の領域はアレンジしてください。
以上、参考になれば幸いですが
他に良い方法があれば読み流してくださいね。
どうも長々と失礼しました。m(__)m
「検索関数を使って検索窓を作成したいんです」の回答画像1
    • good
    • 2
この回答へのお礼

わざわざ表まで作っていただいてありがとうございます。
望んでた結果が表示できたので満足です。
本当にありがとうございました。

お礼日時:2010/02/09 11:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています