- 締切済み
検索プログラム
知識不足で悩んでいるのですが どうしても以下のツールを作成したいのです。 "G5"に入力されたキーワードを シート2の"列A"で検索し該当した全ての 行のA~Hのデータをシートに一覧表示させる 動作をさせたいです。 また、"D5"にBと表示したら "列B"から検索するみたいな条件検索機能も 付けたいです。 "年齢→30歳"検索で Aさん 30歳 男 とでてきて "名前→Aさん"と検索しても上の情報が 出てくるような動作です。 (ようは小さなGoogleみたいなものを 作りたいのです) 本当に迷惑な質問ですが、よろしくお願いします。。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
スーツのデザイナーでプログラマではありません。 Excel も操作したことがありません。 そこで、No2 さんのアドバイスを手がかりにチクッと挑戦してみました。 多分、以下に示すコードを改良すれば、何とかなるかも知れません。 a1 に入力されたキーを含む列をa2:a10から見付けるというものです。 Excel2003で、なんとか動作はしています。 Option Explicit Const conCURRENT_SHEET = 1 Private Sub CommandButton1_Click() Dim I As Integer Dim N As Integer Dim strKey As String Dim strHani As String strKey = Worksheets(conCURRENT_SHEET).Range("a1") & "" strHani = "a2:a10" If strKey <> "" Then ReDim fdatas(99) As String N = DFind(strKey, strHani, fdatas()) MsgBox N + 1 & "件のデータが見つかりました!" For I = 0 To N MsgBox fdatas(I) Next I End If End Sub Public Function DFind(ByVal strKey As String, _ ByVal strHani As String, _ ByRef fdatas() As String) As Integer Dim C As Range Dim F As String Dim N As Integer With Worksheets(conCURRENT_SHEET).Range(strHani) Set C = .Find(strKey, LookIn:=xlValues) If Not C Is Nothing Then F = C.Address Do fdatas(N) = C.Value N = N + 1 Set C = .FindNext(C) Loop While Not C Is Nothing And C.Address <> F End If End With DFind = N - 1 End Function
- imogasi
- ベストアンサー率27% (4737/17069)
標題はVBとなっているようですが、エクセルVBAの質問ですね。 >迷惑な質問ですが、ではなく自分の勉強の程度に、多分あってない、背伸びした質問です。 (1)AdvancedFilterを使う (2)Find,FindNextを使う どちらもWEBにコード例があるはずです。 (1)は http://hp.vector.co.jp/authors/VA016119/excel/fltrcpad.txt などそうではないかな。 (2)は http://www.moug.net/tech/exvba/0050116.htm などが使えるかな。
- miran_2006
- ベストアンサー率25% (29/116)
シート2とか言っているのでエクセルでの操作でしょうか? カフェからなので手元にエクセルがないので確認できませんが、条件式でif文を使ってAがG5と同じならAの内容を表示する。と、同じ要領でB,C,Dって作ってあげればでませんか? それかアクセスにインポートして、アクセス側で抽出フィルターをかけるとか・・・ VBでやるなら、DAO,DACを使う。