- ベストアンサー
Excel_VB:条件を入れてデータ抽出
- 別シートにあるデータベースを特定のセルに抽出条件となるwordを入力すると別シートから情報を返すマクロを作成しています。
- 検索条件の単語を入力するセルには、複数条件で抽出が可能です。
- 別シートのデータベースには、バンド名、曲名、アルバム名、時間、ジャンル、メディア、備考の情報が入力されています。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
Option Explicit Sub MusicStart() Const xName = "Sheet1" 'ソース Const xMode = "*" '検索条件:部分一致:"*"、完全一致:"" Application.ScreenUpdating = False If (ActiveSheet.Name <> xName) Then With Worksheets(xName) If (.UsedRange.Rows.Count > 1) Then 'このクリアはイヤラシイ!、ドコまで?? ' Range("F15:L15").ClearContents If Not IsEmpty(Range("B6")) Then _ .Range("A1").AutoFilter field:=1, Criteria1:=xMode & Range("B6").Value & xMode If Not IsEmpty(Range("B8")) Then _ .Range("A1").AutoFilter field:=2, Criteria1:=xMode & Range("B8").Value & xMode If Not IsEmpty(Range("B10")) Then _ .Range("A1").AutoFilter field:=3, Criteria1:=xMode & Range("B10").Value & xMode .AutoFilter.Range.Offset(1).Copy Range("F15").PasteSpecial .Range("A1").AutoFilter Columns("F:H").AutoFit End If End With Else MsgBox ("別のシートで実行してネ!") End If Application.ScreenUpdating = True End Sub
その他の回答 (3)
- hallo-2007
- ベストアンサー率41% (888/2115)
簡易的なコードがございましたらご教授ください。 何卒よろしくお願いいたします。 ということですので http://www.eurus.dti.ne.jp/yoneyama/Excel/filter3.htm でエクセルのフィルターオプションを勉強してみて下さい。 最後にVBAのコードがあります。 抽出するためのシート 6行目に バンド 名曲名 アルバム名 7行名に 抽出したいバンド名など 15行名に表示したい項目名 マクロの記録を実行すると Sub Macro2() Sheets("Sheet1").Columns("A:F").AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Range("A16:C18"), CopyToRange:=Range("A15:F15"), Unique:=False End Sub みたいな感じになると思います。 わずか1行で済みます。
お礼
ありがとうございます。
- K Kazz(@JazzCorp)
- ベストアンサー率31% (549/1751)
>▼検索条件の単語を入力するセル 1~3を複数条件で抽出 イワユル、キーワード検索だよね? それと、検索結果は複数、がありうるし、ないこともある。結果を出すセルのクリア範囲はどうするの??
お礼
ご対応ありがとうございます!! はい。キーワード検索です。 結果はF15:L15より複数結果の際、下行に1つずつ結果を返すイメージです。 もちろん結果が出ない場合もあります。データベースのレコードは600ほどです。お答えになっていますでしょうか、、、? >1~3を複数条件で抽出 >イワユル、キーワード検索だよね? >それと、検索結果は複数、がありうるし、ないこともある。結果 >を出すセルのクリア範囲はどうするの??
- keithin
- ベストアンサー率66% (5278/7941)
どうして「結果が一つしかない」前提なんですか。 sub macro1() application.screenupdating = false range("15:65536").clearcontents if range("B6") <> "" then _ worksheets("別シート").range("A1").autofilter field:=1, criteria1:=range("B6").value if range("B8") <> "" then _ worksheets("別シート").range("A1").autofilter field:=2, criteria1:=range("B8").value if range("B10") <> "" then _ worksheets("別シート").range("A1").autofilter field:=3, criteria1:=range("B10").value worksheets("別シート").autofilter.range.offset(1).copy range("F15") worksheets("別シート").autofiltermode = false application.screenupdating = true end sub
お礼
ありがとうございます!
お礼
ありがとうございます。