• 締切済み

Excel2003で数百本の鍵の管理をしたいと思っているのですが、

Excel2003で数百本の鍵の管理をしたいと思っているのですが、 例えば「倉庫」というキーワードを入力したら、鍵名に「倉庫」 という文字列が含まれるデータをずらっと表示させるようにする ことはできますか? 可能ならその方法を教えてください。 お願いします。

みんなの回答

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.5

VBA・ADO が未体験ゾーンでしたら、tom04 さんの提案された方向で進められることを お勧めいたします。 後で何かの変更があって急遽メンテナンスしなくてはいけない時に 私の提示したコードが理解できていないと『えらいこっちゃ!』になりかねません。 こんな方法も有ったな・・・と記憶の中に留めて置いてください。

naouki
質問者

お礼

親切にありがとうございました。

  • sekkii
  • ベストアンサー率50% (13/26)
回答No.4

オートフィルタの「オプション」で [倉庫][を含む]と指定すれば 抽出されると思います。

naouki
質問者

お礼

回答ありがとうございます。 参考になりました。

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.3

VBA・ADO を持ち出しては反則ですかね。 シート1のA1に鍵名、B1、C1・・・は何かあれば適当に入れてください。 で、A2~A???(鍵の数だけ)鍵の名前?を入力、B・C列もあれば適当に。 シート1のシート名をSheet1、シート2のシート名をSheet2とします。 VBEに切り替えて、挿入、標準モジュールに下記をコピペ Sub test()   Dim strSql As String   Dim cnXL As Object   Dim rsXL As Object   Const adOpenForwardOnly = 0     Sheet2.Range("A2").Select   Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select   Selection.ClearContents   Range("A1").Select   Set cnXL = CreateObject("ADODB.Connection")   Set rsXL = CreateObject("ADODB.Recordset")   With cnXL     .Provider = "MSDASQL"     .ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};" & _     "DBQ=" & ThisWorkbook.FullName & "; ReadOnly=True;"     .Open   End With   strSql = "select *" _       & " from [sheet1$]" _       & " where 鍵名 like '%" & Sheet2.Cells(1, 1) & "%'"     'Debug.Print strSql   rsXL.Open strSql, cnXL, adOpenForwardOnly   Worksheets("sheet2").Cells(2, 1).CopyFromRecordset rsXL     rsXL.Close: Set rsXL = Nothing   cnXL.Close: Set cnXL = Nothing End Sub Bookを一旦適当な名前で保存。 Sheet2のA1に題名?鍵の名前を入力後 このマクロを実行すれば一覧が出てくるはずです。 Excel2002で検証。

naouki
質問者

お礼

回答ありがとうございます。   マクロはさっぱりわかりませんが、試してみます。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! 一例です。 ↓の画像で説明します。 D1セルに検索したい文字を1文字でも入力するとその文字が含まれているデータすべてを表示するようにしてみました。 A列に鍵名が羅列してあるとします。 B列を作業列として、B2セルに =IF($D$1="","",IF(ISNUMBER(FIND($D$1,A2)),ROW(),"")) という数式を入れ、B2セルのフィルハンドルの(+)マークでダブルクリック、またはオートフィルでずぃ~~~!っと下へコピーします。 そして、D2セルに =IF(COUNT(B:B)<ROW(A1),"",INDEX(A:A,SMALL(B:B,ROW(A1)))) という数式を入れ、オートフィルで下へコピーすると画像のような感じになります。 これで何とか希望に近い形にならないでしょうか? 以上、参考になれば良いのですが・・・m(__)m

naouki
質問者

お礼

画像つきでの回答ありがとうございます! とてもわかりやすく、参考になりました! 早速ためしてみます!

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

データを入力するときにA倉庫 B倉庫 とあった場合   A  B 1 A  倉庫 2 B  倉庫 というようなセルの使い方をして、あとはオートフィルタを利用します

naouki
質問者

お礼

回答ありがとうございます。 参考になりました。

関連するQ&A