- ベストアンサー
ダウンリストを使って文字検索
現在私は、家紋のカタログを作っているのですが、家紋の種類は3000を超えます。その家紋のデータファイルの名前をExcelのシートに縦に並べています。ファイル名は似ているものもあり、すべてを覚えれるようなものではありません。 そこで私がやりたいことは、ファイル名の一部を入力したらその文字を含むファイル名がドロップダウンリストのようなものにずらりと表れ、任意のものを選ぶと指定するセルへそのファイル名が入るようなことができればと思っています。 わかりにく説明ですがわかる方、教えて下さい。 ちなみにExcelのバージョンは2003です。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
◆試しに作ってみました A B C D E F 1 三つ葉葵 菊 ▼ ◆抽出 2 二葉葵 千重菊 3 3 千重菊 菊水 4 4 菊水 三つ割菊 5 5 三つ割菊 三つ葉菊 6 丸に桔梗 7 三つ葉桔梗 8 8 三つ葉菊 ■手順■ 1)B列に、「家紋のデータファイルの名前」が入力されているものとします 2)D1に、ファイル名の一部を入力します 3)作業列A列の式 A1=IF(COUNTIF(B1,"*"&$D$1&"*"),ROW(),"") ★下にコピー 4)入力規則のリストをF列に作成します(リスト名を仮に「◆抽出」とします 5)F2の式 F2=IF(ROW(A1)>COUNT(A:A),"",INDEX(B:B,SMALL(A:A,ROW(A1)))) ★下にコピー 6)メニューバーの[挿入]-[名前]-[定義]を選択します 7)名前を、◆抽出 として、参照範囲に =OFFSET($F$2,,,COUNTIF($F$2:$F$100,">*")) と入力します 8)E1にドロップダウンリストを作成します 9)E1を選択して、メニューバーの[データ]-[入力規則]を選択します 10)入力値の種類を「リスト」にして、元の値に =◆抽出 と入力します 11)E1の▼をクリックすると、E1で指定した文字のある、ドロップダウンリストが表示されます (例では、D1に「菊」を入力されていますので、菊の文字がある一覧がドロップダウンリストが表示されます) ◆一度、上の条件のとおり作って見て試してください ◆うまくいけば、nicedesuさんの実際の条件に変更してください ◆こんなことで、いかがでしょうか?
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
家紋の門外漢sです。 家紋の名前?(三つ葉葵)-種類?(葵紋)ー名前?種類?と収録エクセルのファイル名 の関係はどうなっているのでしょう。 ファイル名から家紋の種類か名前が(素人にも)判るようになっているのですか。 (注)http://www.harimaya.com/kamon/top3.html など目を通しました。 多分検索するのでしょうが、何から何を割り出す(検索する)のでしょう。 ドロップダウンリストは、1段式なら100(50?)も越えると、探しにくく、シートを見たほうが早いとなりませんか。 多段式(徐々に候補を絞っていくやり方)にするには、扱うのにデータベースやVBAの知識がいると思いますが、経験ありますか。 その後の利用・検索のことを考えて、初めから、エクセルに記録しないとだめですが、どういう工夫を織り込んだのか質問では判りません。 ーー ファイル名一覧は1シートにまとまっていますか。 エクセルはMATCH関数でワイルドカード(*)(もし判らなければWEB照会のこと)が使えます。 しかし最初に見つかった行位置しか判りません。 これがエクセルの「抜き出し問題」の難しさで、毎日のように質問が出ます。 VBAでやればそういうこととは違いますが、FINDメソッドの使い方が難しいですが、WEBに実例が沢山あり、VBAの基礎知識とと、理解力さえあれば使えます。ドロップダウンコンボリストに表示するのは、また少し骨です。 ーー 多段式のことですが、少数なら、エクセルの入力規則を使って、例えば府県のリストの中から、神奈川を選んで神奈川県の地方公共団体名を出すようなことはできますが、表をそれに適したように組み替えないとできません。
補足
回答ありがとうございました。 >ファイル名の関係はどうなっているのでしょう。 >ファイル名から家紋の種類か名前が(素人にも)判るようになっているのですか。 関係まではできていません。ですが、種類ごとにわけることも考えて、B列に並んだファイルの名前の横に種類の名前を現在、付けていっているところです。ファイル名は誰が見てもわかると思います。例えば「丸に違い鷹の羽」などといった感じです。ちなみにファイル形式はEMFです。 >ドロップダウンリストは、1段式なら100(50?)も越えると、探しにくく、シートを見たほうが早いとなりませんか。 確かにその通りだと思います。 >データベースやVBAの知識がいると思いますが、経験ありますか。 現在勉強中です。できるようになりたいと思って、いろいろネット等で調べています。本も購入しようと考えています。 >ファイル名一覧は1シートにまとまっていますか。 まとまっています。すべてが1列に並んでいます。 そもそも、なぜ私がこのような作業を必要としているかですが、仕事の関係で家紋をたくさんの人に知ってもらうという企画があり、その一つとして、自分の家に伝わる家紋を調べてもらうというのがあります。そこには家紋の名前、画像、由来、誰が主に使ってきたか・・などをまとめて1枚の紙におさまるよう作っています。お客さんがその場でファイル名がわかるとは限りません。そこで、家紋名の1部を入力し、それに近い家紋名からさらに絞っていくようにしたいのです。 私が作ったものは(途中ですが)「家紋の種類」と「家紋名」をそれぞれ入力したら、別シートにある「家紋名」や「家紋の由来」などからVlookupでとんできます。ただ、これでは家紋名を少しでも間違えたらとんできません。ですので上のような作業ができればと考えました。また、門外漢sさんがいわれるように種類から絞ればリストにでてくる家紋名はさらに経るだろうと思い、可能であればやってみたいとの考えで補足しました。 ちなみに、私のExcelの経験ですが、まだまだ初心者です。でも、自分なりに調べて参考になるコードを自分なりにいじったりしています。FINDで検索するマクロも作りました。画像を挿入するためには必要でしたから。 文章で説明することはとても難しいですね・・・
- deecyan
- ベストアンサー率38% (89/233)
【仕様】 A1 に 入れた文字で検索し コンボボックスで選んだものを A2 に入れる データは Sheet2のA列に入っているものとする(最大5000) 【方法】 コントロールツールボックスで コンボボックスとコマンドボタンを Sheet1に 適当に貼り付ける コードの表示で 下記のコードを貼り付ける Private Sub ComboBox1_Change() Cells(2, 1) = ComboBox1.Text End Sub Private Sub CommandButton1_Click() s1 = Cells(1, 1).Text If Len(s1) = 0 Then Exit Sub ComboBox1.Clear ComboBox1.Text = "" For ii = 1 To 5000 If Sheets("sheet2").Cells(ii, 1) = "" Then Exit For If s1 = Left(Sheets("sheet2").Cells(ii, 1), Len(s1)) Then ComboBox1.AddItem Sheets("sheet2").Cells(ii, 1) End If Next End Sub 以上
補足
回答ありがとうございました。 作って頂いたマクロを試してみました。そこで一つ問題が出てきました。 ドロップダウンリストに出てくるファイル名は入力した文字を先頭として出てきますよね。例えば、「あいうえお」という文字をドロップダウンリストに出したいが、すべては入力せず、「うえお」とセルに書き込んだ場合はリストに出ないようになる。という感じで。 ワイルドカードのように「**うえお」みたにできないでものしょうか?
家紋図鑑 http://www.harimaya.com/o_kamon1/zuukan.html みたいにグループ分けして 二段検索にした方がいいんじゃないでしょうか。 それを作るのが大変という話もあるでしょうけど。 エクセル・ドロップダウンリスト(入力規則) http://www.kenzo30.com/ex_kisopoint/onepoint_sonota3.htm > 任意のものを選ぶと指定するセルへそのファイル名が入る は VLOOKUP関数か INDEX関数とMATCH関数の組み合わせでできます。 http://www.kenzo30.com/ex_kisotyu/ex_ks_tyukyu9_9_4.htm
補足
回答ありがとうございます。 確かに「家紋図鑑」のようにジャンルごとにでてきてから指定する二段検索ができれば、一番いいかと思います。今の自分にはまだ無理かと… そこで、紹介してもらったサイトを見ましたが、ドロップダウンリストについてはこの通りやるとするなら結局3000種類の中から1つを探し出すことになるのではないでしょうか?私がやりたいことは10文字のファイル名があるとするならその中の3文字くらいを入力し、その候補をドロップダウンリストで出てくるようにしたいのです。 もし、教えて頂いたサイトでできるのであれば、どこをみればよいのか教えていただけたらと思います。
補足
ありがとうございます。 試してみました。 理想通りの結果でした。 もし、こんなことができればなぁと思うことですが・・・ 検索エンジンなどである文字を打ち込むところがあって、検索というボタンをクリックしたら、ドロップダウンリストに表示され、指定したセルにその文字が入るという感じです。 何を言いたいのかわかってもらえるでしょうか?説明が下手で申し訳ないです。