オートフィルタの指定の値以上抽出マクロの作成方法

このQ&Aのポイント
  • VBA初心者向けに、オートフィルタの指定の値以上を抽出するマクロの作成方法について解説します。
  • 具体的な手順としては、まず指定の値をセルに代入し、その値以上のデータを抽出するためにオートフィルタを使用します。
  • しかし、一部の数値において正常に抽出が行われない場合があるため、対処方法としては、数値を文字列として扱うか、条件式を少し変更することが考えられます。
回答を見る
  • ベストアンサー

オートフィルタの指定の値以上抽出マクロについて

VBA初心者です。 よろしくお願いします。 オートフィルタの指定の値以上を抽出するマクロを作りたいのですが、 うまくいきません。 内容は、Sheet1のB6にSheet2のA2の値を代入し A列のA2の値以上の抽出をしたいのですが、Seet1のB2の5000は抽出されるのに どうしてもB6に代入した5000の値が抽出されません。 自分なりにマクロ記録を少しいじってつくったのですが。。。 Sub aa() ' Dim a As Integer a = Sheets("Sheets2").Range("A2").Value Range("B6").Select ActiveCell.FormulaR1C1 = a ActiveSheet.Range("$A$5:$FX$307").AutoFilter Field:=4, Criteria1:=">" & a _ End Sub B6の5000の値は他の数値とは異なる扱いになっているようです。 Sheet1 .......A......... B..........C............D 1 数値|数値2|数値3|数値4 2 5000...1000 3 2000.. 2000 4 3000...3000 5 4000...4000 6 5000..←-----(抽出されない) Sheet2 .......A 1  値  2 5000 3 0 素人のため、説明もうまくできませんが、わかる方どうぞご指導願います。 使用しているのはEXCEL2007です。

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

  • ベストアンサー
  • mar00
  • ベストアンサー率36% (158/430)
回答No.2

>Seet1のB2の5000は抽出されるのに ActiveSheet.Range("$A$5:$FX$307").AutoFilter としているので B2は抽出の対象外になっていると思います。 ActiveSheet.Range("A2").AutoFilterにすれば良いのではないかと思います。 >B6に代入した5000の値が抽出されません。 Criteria1:=">" & aはaより大きい値を抽出するからです。 Criteria1:=">=" & aにしてみて下さい。

tokyo2199
質問者

お礼

ありがとうございます。 Criteria1:=">=" 変更後無事処理できました。 やはり色々と奥が深いですね。 わからないことばかりです(笑) ありがとうございました。

その他の回答 (1)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

マクロの記録で通常の操作でオートフィルタを行って試験されてはどうでしょう。マクロが記録されますのでそれをご自分が作成したマクロと比較してみることでしょう。

tokyo2199
質問者

お礼

ありがとうございました。 マクロ記録と比べてはみているのですが・・・

関連するQ&A

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

    オートフィルタのマクロを組もうとしているのですが、フィルタ条件に別シートのセルの値を入れたいのですが、そこがどうもうまくいきません。 作成したマクロは以下の通りです。 Sub 累計計算マクロ() Dim aRange As Range, bRange As Range, i As Date Set aRange = Sheets("累計").Range("B1") Set bRange = Sheets("累計").Range("B2") i = aRange.Value Sheets("クイーンエステート").Activate Range("A13:L13").Select Selection.AutoFilter Selection.AutoFilter Field:=2, Criteria1:="<=i", Operator:=xlAnd End Sub どなたか助けてください! 宜しくお願い致します。

  • オートフィルタ抽出データをコピーするマクロについて

    マクロについて勉強中の者です。 "Sheet1"にあるデータをオートフィルタで抽出し、 "Sheet2"に抽出データのみをコピーをしたいと思っています。 Range("A10:G59").Select Selection.ClearContents With Worksheets("Sheet1").Range("A1") .AutoFilter .AutoFilter Field:=1, Criteria1:="○" .CurrentRegion.SpecialCells(xlCellTypeVisible).Copy Worksheets("Sheet2").Range("A9") End With End Sub としてみたのですが、 これを実行すると、オートフィルタが1行目(A1)ではなく、 2行目で設定されてしまい、抽出データがずれてしまいます。    A    B    C 1 品 名  仕入先  発注数 ←タイトル行に設定したい 2 りんご  ヤマト   10  ← この行に▼が設定される 色々調べた結果のマクロなので、どこが悪いのか見当がつきません。 解りやすく教えていただける方がおられましたら、よろしくお願い致します m(__)m

  • マクロ オートフィルタで困っています。

    マクロ オートフィルタで困っています。 1列目と2列目からそれぞれ条件をフィルタで抽出し、抽出された行を削除するマクロを組んだのですが(下記)、Bの条件が表にない場合に2行目から下が全て削除されてしまいます。 元の表は毎週変わるため、抽出する条件があるかないかはその時次第です。 オートフィルタにこだわってはいませんが、その他の抽出方法もいまいち分からず……。 どのようにすればよいのか、教えていただけますでしょうか。 宜しくお願い致します。 <マクロ> Sub Macro() Selection.AutoFilter Field:=1, Criteria1:="A" Selection.AutoFilter Field:=2, Criteria1:="B", Operator:=xlAnd Dim gyou(1) As Long gyou(0) = 2 gyou(1) = Range("A1").CurrentRegion.Rows.Count Rows(gyou(0) & ":" & gyou(1)).Select Selection.Delete Shift:=xlUp End Sub

  • エクセルマクロ フィルター

    宜しくお願い致します。 Set flt = Range("j6") j6の値が49727491で別シートからこの値を含むリストを オートフィルターで抽出したいですがリストの方の値が 237578-20080617-49727491となってます j6を含む形で抽出するにはどうしたい良いでしょうか? Workbooks("book1.csv").Sheets("book1").Range("A1").AutoFilter Field:=1, Criteria1:=flt

  • Excelマクロで他シートへの抽出:エラー

    こちらの質問 http://okwave.jp/qa/q4760155.html を参考に、エクセルマクロを作りました。 Sheet1の10列目(J)に@が入っている行をすべて、 Sheet2に抽出表示します。コードは次になります。 Private Sub Worksheet_Activate() With Sheets("Sheet1") .AutoFilterMode = False .Range("A1:N1").AutoFilter .Range("A1:N1").AutoFilter Field:=10, Criteria1:="@" .Range(.Range("A1"), .Range("A1").SpecialCells(xlLastCell)).SpecialCells(xlCellTypeVisible).Copy Range("A1") .AutoFilterMode = False End With End Sub このマクロを実行すると、確かにSheet2では抽出が行われるのですが、 同時にSheet1の内容も抽出された内容に変わってしまいます。 どこに問題があるのでしょうか。 よろしくお願いします。

  • excel 文字抽出マクロの編集についてですが・・・

    マクロで指定した文字を含むデータを抽出するマクロを 作っていたのですが、うまく作動しません。 どこが悪いか教えてください。 Sub 指定した文字データの抽出() Dim strMoji As String strMoji = InputBox("検索文字を入力してください") strMoji = "*" & strMoji & "*" Sheets("Sheet2").Activate Cells.Clear With Sheets("Sheet1") .Range("A2").AutoFilter Filde:=3, criterial:=strMoji .Range("A2").CurrentRegion.Copy _ Destination:=Sheets("Sheet2").Range("A2") .Range("A2").AutoFilter End With Sheets("Sheet2").Columns("A:D").AutoFit End Sub

  • Excelマクロでオートフィルターからコピペ

    ファイルのB列の値から0以外の値をオートフィルターで抽出し、値を、別のファイルのD列の一番下に貼りつけるマクロを作っていますがうまくいきません。 今作ったのは Sub macro1() If ActiveSheet.AutoFilterMode = False Then Range("A:G").Select Selection.AutoFilter Else Selection.AutoFilter Range("A:G").Select Selection.AutoFilter End If Selection.AutoFilter Field:=2, Criteria1:="<>0", Operator:=xlAnd Range("A1").Select Range("B2", Range("B2").End(xlDown)).Select Selection.Copy Windows("貼りつけるファイル名").Activate Cells(Rows.Count, 4).End(xlUp).Offset(1).Select ActiveSheet.Paste End Sub です。 フィルターで0以外の値を抽出しコピーまではできていますが、貼りつけるところでエラーがでます。 Microsoft Visual Basic 400 というエラーです。 何が悪いのか分かりません・・・。 分かる方いましたらご教授ください。よろしくお願いします。

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

    質問です。 オートフィルタで複数列を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 よろしくお願いいたします。

  • オートフィルターで抽出してコピー&印刷するマクロ

    いつもお世話になります。 エクセル2002です。 (1)オートフィルターでデータを抽出(部署ごと)する。(インプットボックスで) (2)抽出された行を1行ずつコピーし、【編集シート】のA1セルに貼り付け (3)【印刷シート】の印刷 (データが3行あれば3枚の印刷がしたいのです) 《データ》   A列  B列 1 (部署)(商品名) 2  01   商品1 3  01   商品2 4  02   商品1  5  02   商品3 ・・・・・・・・・・ ---------------- Sub Macro1() Dim 部署 部署 = InputBox("部署コードを入れてください") Selection.AutoFilter Field:=1, Criteria1:=部署 Range("A1").Select End Sub ------------------ ↑のマクロにどう追加すればよいのかわからないので、教えてください。 よろしくお願いします。

  • EXCElセルの値でフィルター抽出したい

    windows10,microsoft365使用の超初心者です。 Sub セルの値でオートフィルターで抽出しその行を削除したい() Range("D8").AutoFilter Field:=6, Criteria1:=Range("F4").Value, Operator:=xlAnd End Sub このコードでやっても、うまく抽出してくれません。 どうして出来ないのかわかりません。ご教示よろしくお願いいたします。 セルF4は、表示は「6月20日」数値は44002です。 セルD8は、表示は「令和2年6月分」で数値は44002です。

専門家に質問してみよう