• 締切済み

検索プログラム

知識不足で悩んでいるのですが どうしても以下のツールを作成したいのです。 "G5"に入力されたキーワードを シート2の"列A"で検索し該当した全ての 行のA~Hのデータをシートに一覧表示させる 動作をさせたいです。 また、"D5"にBと表示したら "列B"から検索するみたいな条件検索機能も 付けたいです。 "年齢→30歳"検索で Aさん 30歳 男 とでてきて "名前→Aさん"と検索しても上の情報が    出てくるような動作です。 (ようは小さなGoogleみたいなものを               作りたいのです) 本当に迷惑な質問ですが、よろしくお願いします。。

みんなの回答

noname#22222
noname#22222
回答No.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)
回答No.2

標題は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 などが使えるかな。

回答No.1

シート2とか言っているのでエクセルでの操作でしょうか? カフェからなので手元にエクセルがないので確認できませんが、条件式でif文を使ってAがG5と同じならAの内容を表示する。と、同じ要領でB,C,Dって作ってあげればでませんか? それかアクセスにインポートして、アクセス側で抽出フィルターをかけるとか・・・ VBでやるなら、DAO,DACを使う。

関連するQ&A