[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ソートにワイルドカードを使いたい』(Takato)
VBAで以下を実行した場合
keyWord1 = "50*" が有効になりますが
Sub Macro1()
keyWord1 = "50*"
keyWord2 = "55"
'keyWord3 = "60"
ActiveSheet.Range("A1").AutoFilter Field:=1, _
Criteria1:=Array(keyWord1, keyWord2, keyWord3), Operator:=xlFilterValues End Sub
keyWord3 = "60"を有効にすると
keyWord1 = "50*" が無効になります
解決法を教えていただけないでしょうか?
よろしくお願いいたします
< 使用 Excel:Excel2010、使用 OS:Windows7 >
どういうデータが入力されているか教えていただければ、何かお役に立てるかもしれません。 (稲葉) 2019/01/31(木) 18:41
オートフィルタでなく、フィルタオプションではだめでしょうか
(マナ) 2019/01/31(木) 19:10
なるほど。 では、フィルターオプション(AdvancedFilter)はいかがですか? 以下のようなデータがあって、C列が抽出条件とします。
実行前 |[A] |[B]|[C] [1] |データ| |データ [2] | 60| |50* [3] | 46| | 60 [4] |50C | | 55 [5] | 50| | [6] | 44| | [7] | 55| | [8] |50A | | [9] | 61| | [10]|50B | | [11]| 64| |
結果 |[A] |[B]|[C] [1] |データ| |データ [2] | 60| |50* [4] |50C | | 55 [5] | 50| | [7] | 55| | [8] |50A | | [10]|50B | |
を参考にマクロの記録を取ると Sub Macro1() Range("A1:A11").Select Range("A1:A11").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _ Range("C1:C4"), Unique:=False End Sub という結果が得られました。
参考になりますか? (稲葉) 2019/01/31(木) 19:16
不完全な情報を書き込み申し訳ございませんでした
(Takato) 2019/01/31(木) 19:31
いや、別シートに抽出条件かけますよ? Sub Macro8() Sheets("Sheet1").Select Range("A1:A11").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _ Sheets("Sheet2").Range("A1:A4"), Unique:=False End Sub
Sheet1にデータ、Sheet2に抽出条件 Sheet1を選択してマクロの記録開始 データ範囲を選択、抽出範囲をSheet2に移動して選択 実行
で上記の記録が取れます。
やってみてくだせい (稲葉) 2019/01/31(木) 19:36
別シートを自動作成して
フィルタ適用後削除で
対応できるように考えてみます
ありがとうございました
(Takato) 2019/01/31(木) 20:03
抽出条件は別ブックでも行けた気がするので、専用のブックに コードと条件かいておけばいいんじゃないですかね? 今試せないので、明日チャレンジしてみますわ (稲葉) 2019/01/31(木) 20:18
別ブックに抽出条件とプログラム書いて実験したら、うまくいったので紹介しておきます。 Sub 別ブックのフィルタオプション() Dim wb As Workbook Dim fn As String ChDrive "C" ChDir "C:\" '★ここに、いつも保存しているフォルダのパスを入れておく fn = Application.GetOpenFilename("Microsoft Excelブック,*.xls?")
If Not fn = "False" Then 'データブックが開かれているかチェックし、開かれていなければ開く On Error Resume Next Set wb = Workbooks(Dir(fn)) On Error GoTo 0 If wb Is Nothing Then Set wb = Workbooks.Open(fn)
'フィルタオプションの実行 'CurrentRegion は指定したセルでCtrl+*を押したセル範囲 コード上では、A1を選択してCtrl+*を押した状態 'データブックの項目名より上に何かしら入力があると、正しく項目名が取れないのでエラーになります。 wb.Sheets("●").Range("A1").CurrentRegion.AdvancedFilter _ Action:=xlFilterInPlace, _ CriteriaRange:=ThisWorkbook.Sheets("Sheet1").Range("A1").CurrentRegion, _ Unique:=False End If End Sub (稲葉) 2019/02/01(金) 08:54
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.