• 締切
  • 暇なときにでも

検索プログラム

  • 質問No.2243978
  • 閲覧数45
  • ありがとう数0
  • 回答数3

お礼率 33% (2/6)

知識不足で悩んでいるのですが
どうしても以下のツールを作成したいのです。

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

本当に迷惑な質問ですが、よろしくお願いします。。

回答 (全3件)

  • 回答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
  • 回答No.2

ベストアンサー率 27% (4524/16174)

標題は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

ベストアンサー率 25% (29/116)

シート2とか言っているのでエクセルでの操作でしょうか?
カフェからなので手元にエクセルがないので確認できませんが、条件式でif文を使ってAがG5と同じならAの内容を表示する。と、同じ要領でB,C,Dって作ってあげればでませんか?

それかアクセスにインポートして、アクセス側で抽出フィルターをかけるとか・・・

VBでやるなら、DAO,DACを使う。
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ