• ベストアンサー

オートフィルタからの選択部分のみからの抽出

オートフィルタからある特定項目のみ表示して、その特定項目からのみデータを抽出したいのですがうまくいきません。 シートAAAAにある定常にオートフィルタをかけその定常部分のみから A1:B1の内容を抽出してセルBBBBにはり付けしたいという内容です。 Sheets("AAAA").Select With Worksheets("AAAA") .Range("B5").AutoFilter _ Field:=12, Criteria1:="定常" End With Sheets("BBBB").Select Sheets("AAAA").Range("B5:O15000").AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Range("A1:B2"), CopyToRange:=Range("B7"), Unique:=True Range("B7").Select Selection.Sort Key1:=Range("B7"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答No.2

>A1:B1の内容を抽出してセルBBBBにはり付けしたいという内容です。 Sheets("BBBB")のA1:B2に設定した抽出条件で、セルB7に貼り付けしたい...という事ではないですか? AdvancedFilterを使っているのですから、オートフィルタ不要です。 AdvancedFilterの抽出条件に『M列が"定常"』という条件を加えれば良いです。 以下、まず新規シートを追加して実験してみてください。 1)新規シート追加。 2)新規シートのA1:B2にSheets("BBBB")のA1:B2をコピー。 3)新規シートのC1にSheets("AAAA")のM5をコピー。 4)新規シートのC2に 定常 と入力。 5)新規シートをアクティブにして以下コードを標準モジュールに置いて実行。 Sub test()   Sheets("AAAA").Range("B5:O15000").AdvancedFilter Action:=xlFilterCopy, _                            CriteriaRange:=Range("A1:C2"), _                            CopyToRange:=Range("B7"), _                            Unique:=True End Sub 抽出できたら本番コードに応用してください。 抽出条件を追加して CriteriaRange:=Range("A1:C2") にするところがポイントです。 概ね With Sheets("BBBB")   Sheets("AAAA").Range("B5:O15000").AdvancedFilter Action:=xlFilterCopy, _                            CriteriaRange:=.Range("A1:C2"), _                            CopyToRange:=.Range("B7"), _                            Unique:=True   .Range("B7").CurrentRegion.Sort Key1:=.Range("B7"), _                   Order1:=xlAscending, _                   Header:=xlGuess, _                   OrderCustom:=1, _                   MatchCase:=False, _                   Orientation:=xlTopToBottom, _                   SortMethod:=xlPinYin End With こんな感じになるかと。 もしかしたら.Range("B7").CurrentRegionでは対象範囲外まで含めてしまうかもしれません。 適宜修正してください。

toppokun10
質問者

お礼

ありがとうございました。 何とか解決できました。

その他の回答 (1)

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

ほとんど質問者のコードだけ挙げて、コードを読者に読み解かしている。 何をしたいのか、表現がわかりにくい。 実例をあげて説明のこと。 範囲も(実際はそうでも)B5:O15000とかでなく、A列に近い数列の範囲で語ること。追試がやりにくい。読者・回答者へのサービス精神を多少持ってほしい。 === 次の2点どうですか。 (1)操作をしてマクロの記録で判ることではないのか。 (2) >オートフィルタからある特定項目のみ表示して、その特定項目からのみデータを抽出したい とは 下記のパターンと、どう・どこが違うのか Sub Macro1() Range("A1:B15").Select Selection.AutoFilter Selection.AutoFilter Field:=1, Criteria1:="a" Selection.AutoFilter Field:=2, Criteria1:="z" End Sub A列でセルの値aでフィルタし、その後B列でセルの値Zでフィルタする。 その後の、コピー貼り付けの件などは、独立した、疑問のない件で質問からはずしたら。

専門家に質問してみよう