Excel VBA質問箱 IV

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

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


5366 / 13644 ツリー ←次へ | 前へ→

【51236】検索機能 仕事人II 07/9/5(水) 14:52 質問[未読]
【51237】Re:検索機能 Jaka 07/9/5(水) 15:56 発言[未読]
【51239】Re:検索機能 仕事人II 07/9/5(水) 16:22 発言[未読]
【51241】Re:検索機能 Jaka 07/9/5(水) 16:55 発言[未読]
【51267】Re:検索機能 Michi 07/9/7(金) 7:47 発言[未読]

【51236】検索機能
質問  仕事人II  - 07/9/5(水) 14:52 -

引用なし
パスワード
   お世話になります。
VBAと関数を利用して次のような検索機能を設定しました。
検索目的のワークシート上にボタンを配置して、そのボタンをクリックすると
検索フォームが表示され、そのフォーム上で検索条件を入力し検索ボタンをク
リックすると検索を開始し、同じフォーム上に検索結果を表示させるような機
能を設定しました。
ワークシート(名)「検索結果表示」を用意し、VBAには、
       ↓
Private Sub CommandButton1_Click()
Worksheets("検索結果表示").Range("E3").Value = TextBox1.Text
Label51.Caption = Worksheets("検索結果表示").Range("M3").Value  
Label52.Caption = Worksheets("検索結果表示").Range("H15").Value  el1.Caption = Worksheets("検索結果表示").Range("E6").Value  
Label2.Caption = Worksheets("検索結果表示").Range("H6").Value 
Label3.Caption = Worksheets("検索結果表示").Range("J6").Value Label4.Caption = Worksheets("検索結果表示").Range("L6").Value 
Label5.Caption = Worksheets("検索結果表示").Range("N6").Text  
Label6.Caption = Worksheets("検索結果表示").Range("P6").Text 
Label7.Caption = Worksheets("検索結果表示").Range("R6").Text  
Label50.Caption = Worksheets("検索結果表示").Range("U6").Text 
End Sub

と言うような記述をしました。この記述により、検索条件がワークシート
「検索結果表示」上に転送され、ワークシート側でVLOOKUP関数による検
索を行い、その結果をフォーム上へ表示する、と言う仕組みです。
結果はうまくいきました。
ですが、1つ問題がありまして...

〔検索データベース〕
 
    部品1  3個   ○○円
    部品2  5個   ○○円
商品A 部品3
    部品4
    部品5

検索したいデータベースは上記のようになっていまして、検索条件は商品
A・B・C・D...です。つまり、商品1つに対して検索結果として表示したい
結果は部品であり複数となります。VLOOKUP(若しくはHLOOKUP)では検索条件
に対して1つの行若しくは1つの列単位での結果表示になってしまうと思
うのですが、何か良い他の方法はあるでしょうか?
宜しくお願い致します。

【51237】Re:検索機能
発言  Jaka  - 07/9/5(水) 15:56 -

引用なし
パスワード
   提示されたA列らしき???(この辺はっきりさせた方がいいです。)
「商品A」という文字が入ったセルの状態(結合?)等がはっきりしないと
良い方法も何もいえないと思います。

でも、VLOOKUPは使えないでしょうね。
頭の商品「商品A」の位置の数を数えて、その分ループさせるしかないと思います。

【51239】Re:検索機能
発言  仕事人II  - 07/9/5(水) 16:22 -

引用なし
パスワード
   ▼Jaka さん:説明不足ですみません。

〔検索データベース〕
 A   B    C     D
 
    部品1  3個   ○○円
    部品2  5個   ○○円
商品A 部品3
    部品4
    部品5

※A列は結合されています。

>でも、VLOOKUPは使えないでしょうね。
>頭の商品「商品A」の位置の数を数えて、その分ループさせるしかな
>いと思います。
  ↓
AdvancedFilterメソッドで出来るかどうか調べていますが...

【51241】Re:検索機能
発言  Jaka  - 07/9/5(水) 16:55 -

引用なし
パスワード
   エラー判定入れてないけど...。
例えば。

Dim AA As Variant, AD As String, RR As Long
AA = Application.Match("商品B", Columns(1), 0)
AD = Range("A" & AA).MergeArea.Address
RR = 3
With Range(AD)
  .Resize(, RR).Offset(, RR - 1).Resize(, .Columns.Count).Select
End With

【51267】Re:検索機能
発言  Michi  - 07/9/7(金) 7:47 -

引用なし
パスワード
   ▼仕事人 さん:

道です。おはようございます。

Autofilterで出来るのでは。
結合セルは、一旦結合をはずし、同じ文字を入れて
VlookUp終了後、再度結合セルに戻すと良いのでは

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