質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

1回答

2655閲覧

VBAでフィルタオプションを使った部分一致検索

kkkkuni

総合スコア7

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2018/03/11 06:09

編集2018/03/11 12:22

前提・実現したいこと

VBAでフィルタオプションを使った3項目以上の部分一致検索を行いたい。

該当のソースコード

VBA
Sub フィルターオプションを使ったデータの抽出()

'部分一致検索は、検索条件を「」で囲む
Cells(9, "A").Value = "
" & Cells(9, "A").Value & ""
Cells(9, "B").Value = "
" & Cells(9, "B").Value & ""
Cells(9, "C").Value = "
" & Cells(9, "C").Value & ""
Cells(9, "D").Value = "
" & Cells(9, "D").Value & ""
Cells(9, "E").Value = "
" & Cells(9, "E").Value & ""
Cells(9, "G").Value = "
" & Cells(9, "G").Value & "*"

Range("A11").CurrentRegion.AdvancedFilter _
Action:=xlFilterInPlace, _
CriteriaRange:=Range("A8:G9"), _
Unique:=False
End Sub

試したこと

Cells(, ).Valueの検索では2項目までの部分一致検索しかできないことがわかったが、
3項目以上の 部分一致検索がわからない。

補足情報(FW/ツールのバージョンなど)

Office2013

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

Excel 2013で試してみましたが、3項目でもうまく部分一致検索できるようです。
以下、C8:E9に書いた3条件でA11以下をフィルターする例です。

  • 実行前

名前無いの3条件でフィルターしてみました。
イメージ説明

  • 実行後

うまく、名前無いの3つを含むものだけになっています。
イメージ説明

  • ソースコード

vba

1Sub フィルターオプションを使ったデータの抽出() 2 3 '部分一致検索は、検索条件を「*」で囲む 4 Cells(9, "C").Value = "*" & Cells(9, "C").Value & "*" 5 Cells(9, "D").Value = "*" & Cells(9, "D").Value & "*" 6 Cells(9, "E").Value = "*" & Cells(9, "E").Value & "*" 7 8 Range("A11").CurrentRegion.AdvancedFilter _ 9 Action:=xlFilterInPlace, _ 10 CriteriaRange:=Range("C8:E9"), _ 11 Unique:=False 12End Sub 13

投稿2018/03/11 10:40

segavvy

総合スコア958

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kkkkuni

2018/03/11 12:28

回答ありがとうございます。 たとえばA9に入力した文字列はA11列以下を検索し、 B9に入力した文字列はB11列以下を検索できるようにし、 A9とB9に文字列がある場合は両方に一致する結果を表示させたいのですが可能でしょうか?
segavvy

2018/03/11 13:01

Excelのフィルター機能はかなり複雑なことができるので、おそらく可能だと思います。 なお、VBAで試されるよりも、まずExcelのフィルター機能を試されるのが良いかと思います。こちらの方が試行錯誤しやすいですし、フィルター機能で実現できればVBAで書くのも簡単かと思います。 フィルター機能の詳細については、マイクロソフトのサポートサイトに解説記事があります。 https://support.office.com/ja-jp/article/%E8%A9%B3%E7%B4%B0%E3%81%AA%E6%A4%9C%E7%B4%A2%E6%9D%A1%E4%BB%B6%E3%82%92%E6%8C%87%E5%AE%9A%E3%81%97%E3%81%A6%E3%83%AA%E3%82%B9%E3%83%88%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E6%8A%BD%E5%87%BA%E3%81%99%E3%82%8B-4c9222fe-8529-4cd7-a898-3f16abdff32b また、「Excel フィルター機能 複数列」などでググると、分かりやすく解説されているサイトが見つかるかと思います。
kkkkuni

2018/03/11 13:03

ありがとうございます。 一度調べてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問