Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


24185 / 76738 ←次へ | 前へ→

【57904】Re:テキストボックスに条件分岐で検索値を表示
回答  neptune  - 08/9/19(金) 17:23 -

引用なし
パスワード
   ▼takeshi さん:
こんにちは

>得意先が約50社、製品は何千とあるし、常に得意先も製品も追加されていきます。
>そうなもんで、力技はちょっと・・・。
それでは、サンプル、提案を何個か。
いずれも未検証です。

取り合えず、力技のサンプル。そんなには遅くはないかも?
これが検索の基本かな?
Sub t()
Dim rngdb As Range
Const shName As String = "製品登録"
Dim sName As String   '製品名
Dim Accept As String  '受注
Dim Customer As String '得意先
Dim i As Long

'  sName、accept、customerのそれぞれにデータを代入しておく
  'それぞれの関係が判らないので自分で書いてください。
'  sName = ?
'  Accept = ?
'  Customer = ?

  Set rngdb = Worksheets(shName).Range("A5").CurrentRegion
  For i = 1 To rngdb.Rows.Count
    If rngdb(i, 1).Value = Name Then        '製品名の比較検証
      If rngdb(i + 1, 1).Value = Customer Then  '顧客
        If rngdb(i, 3).Value = Name Then    '製品名
          '全て一致したのでしたい処理
        End If
      End If
    End If
  Set rngdb = Nothing
End Sub

サンプル2.findを使ってみた。findは使った事ないのでHelpで煮詰めてね。
これはそこそこ速いと思います。
Sub t2()
Dim rngdb As Range, rngFind As Range
Const shName As String = "製品登録"
Dim sName As String   '製品名
Dim Accept As String  '受注
Dim Customer As String '得意先

'  sName、accept、customerのそれぞれにデータを代入しておく
  'それぞれの関係が判らないので自分で書いてください。
'  sName = ?
'  Accept = ?
'  Customer = ?
  Set rngdb = Worksheets(shName).Range("A5").CurrentRegion
  Set rngFind = rngdb.Find(sName)
  Do Until rngFind Is Nothing
    If rngFind.Offset(, 1).Value = Accept Then
      If rngFind.Offset(, 2).Value = Customer Then
        '見つかった
        Exit Do
      End If
    End If
    Set rngFind = rngdb.FindNext(rngFind)
  Loop

End Sub

その3
データが数万件あり、検索条件が複数なら、フィルタオプションをお勧めします。
これも結構速いです。条件によってはその5と変わらない検索速度を持ちます。

その4
findよりmatchワークシート関数が速いといわれています。自分では試した事
はありません。

その5
データをcsvファイルなど外部ファイルとしておき、ADOで取得する。
バラツキなしに速いです。但し、経験有りの場合に話。

研究してみて自分にあったのを考えて下さい。
0 hits

【57882】テキストボックスに条件分岐で検索値を表示 takeshi 08/9/18(木) 22:33 質問
【57883】Re:テキストボックスに条件分岐で検索値を... neptune 08/9/18(木) 22:46 発言
【57884】Re:テキストボックスに条件分岐で検索値を... takeshi 08/9/18(木) 23:17 発言
【57904】Re:テキストボックスに条件分岐で検索値を... neptune 08/9/19(金) 17:23 回答
【57906】Re:テキストボックスに条件分岐で検索値を... kanabun 08/9/19(金) 19:43 発言
【57908】Re:テキストボックスに条件分岐で検索値を... neptune 08/9/19(金) 21:52 発言
【57915】Re:テキストボックスに条件分岐で検索値を... takeshi 08/9/20(土) 12:58 お礼
【57889】Re:テキストボックスに条件分岐で検索値を... kanabun 08/9/19(金) 10:18 発言
【57912】Re:テキストボックスに条件分岐で検索値を... kanabun 08/9/20(土) 0:50 発言
【57918】Re:テキストボックスに条件分岐で検索値を... takeshi 08/9/21(日) 1:34 お礼
【57923】Re:テキストボックスに条件分岐で検索値を... kanabun 08/9/21(日) 9:34 発言
【57927】Re:テキストボックスに条件分岐で検索値を... takeshi 08/9/21(日) 19:31 お礼
【57914】Re:テキストボックスに条件分岐で検索値を... takeshi 08/9/20(土) 12:49 回答

24185 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free