• 締切済み

オートフィルタ マクロについて

質問です。 オートフィルタで複数列を1つの条件で抽出したいのですが、教えてください。 たとえばA列が納品書No.・B列が受注No.・C列が商品No.なのですがすべて数字の為、出来ればInBox一回でA-C列を検索してほしいです。 指定納品書NO 受注NO 元品番 21812 3252608 77 21880 3307989 32B 22053 3389769 95414A 22050 3389770 67312H 22052 3389771 67312H 22050 3389773 67118H 以下の様なマクロを作ってみましたが、 A-C列全てに一致しないと抽出しないようです。 どなたかご教授いただけないでしょうか? マクロ '条件1 の設定 Dim 検索NO As Variant '抽出キーの入力指示 検索NO = InputBox("検索NOを入力てください。") 'キャンセルした場合の処理 If 検索NO = Empty Then Exit Sub End If 'オートフィルタがかかっていなかったらかける 'かかっていたら念の為一度解除し再設定 If ActiveSheet.AutoFilterMode = False Then Range("A2:O2").Select Selection.AutoFilter Else Selection.AutoFilter Range("A2:O2").Select Selection.AutoFilter End If Selection.AutoFilter Field:=1, _ Criteria1:=">=" & 検索NO, Operator:=xlAnd, Criteria2:=" " & 検索NO Selection.AutoFilter Field:=2, _ Criteria1:=">=" & 検索NO2, Operator:=xlAnd, Criteria2:=" " & 検索NO2 Selection.AutoFilter Field:=3, _ Criteria1:=">=" & 検索NO3, Operator:=xlAnd, Criteria2:=" " & 検索NO3 AutoFilterMode = False Application.ScreenUpdating = True End Sub よろしくお願いいたします。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

VBAを言う前に、マクロの記録というのがある。 それをまずやってみて、それから質問すること。 そのためには、エクセルの勧めるフィルタの使い方の学習が先。 ーー 問題は、条件の書き方(表現があるか)だが 条件はどういう条件を考えているのか、「文章で示せ」。 それを、考えを整理して言葉で表現するのが先だろう。 大筋はAND条件とOR条件にゆきつくもの。 うまく行かない自己流のコードなど質問に書いても(アイデアが引きずるられて、読者に読み解かせる手数をかけるだけ)書いても役に立たない。 エクセルの前提は、それの条件をシートのセルに、形式に合わせて入れて明示する方式。 それが嫌ならSQLなりに直接勉強してSQL文を組む勉強したら。 ーー 条件によっては、1行内の列データのAND、OR条件の組み合わせなら、IF文を書いて、目的の行を絞れるかもしれない。 ーー 下記のデータを借りて、操作をまくろに記録すると http://www4.synapse.ne.jp/yone/excel2010/excel2010_filter21.html の例で 条件が下記のような場合(A23:B25) 担当者 単価 岡田 >5000 井上 >6000 ーーー Sub Macro1() ' ' Macro1 Macro Range("A1:H18").Select Selection.AutoFilter Range("A1:H18").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _ Range("A23:B25"), Unique:=False End Sub 結果 一部列省略 伝票No. 日付 担当者 型番 単価 1008 2006/3/1 岡田 C-105B 8,000 1012 2006/4/1 岡田 B-033W 7,000 1015 2006/5/1 井上 B-033W 7,000 1016 2006/6/1 岡田 C-105B 8,000

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.2

> 出来ればInBox一回でA-C列を検索してほしいです。 同じ番号でA-C列の中で一致するものを探したいということですか? 検索NO2と検索NO3はどこから出てきたのかわからないのですが・・・ > Criteria1:=">=" & 検索NO, Operator:=xlAnd, Criteria2:=" " & 検索NO 検索NO以上かつ検索NOと等しいという条件は意味がないと思いますが・・・ > AutoFilterMode = False にしたらフィルター解除されますし・・・ なお、いらぬお節介だとは思いますが、VBEのオプション設定で「変数の制限を強制する」にチェックを入れておいた方がいいのではないでしょうか。

  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.1

こんにちは 指定納品書NO受注NO元品番 21812325260877 21880330798932B 22053338976995414A ・・・ どこが指定納品書NOで、どこが受注NOで、どこが元品番なのか分かりません。 桁数も決まっていないみたいですし、数字と言いつつ英字も入ってますよね? まずはそこをはっきりさせて下さい。

関連するQ&A