• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:「~以上、~以下」のオートフィルタのVBAについて)

VBAによるオートフィルタの使用方法と注意点

SI299792の回答

  • SI299792
  • ベストアンサー率48% (715/1479)
回答No.1

私がやってみたら、抽出できました。 Field:=10 ならば、J列ですが、それで間違いないですが。 20170901だと、日付のようですが、本当に8桁の数字で入っていますか、日付の形式で入っていませんか。ご確認ください。 InputBoxの記述は間違い。""の中に変数は書けません。 Criteria1:=">=" & 日付 & "01" Criteria2:="<=" & 日付 & "31" にして下さい。

osashi
質問者

お礼

""の中に変数入力できないんですね…(T_T)今まで知らず、お恥ずかしい限りです…。ご回答いただいて本当にありがとうございます!とても勉強になりました!

関連するQ&A

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

    マクロ オートフィルタで困っています。 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

  • オートフィルタのVBAについて

    初めまして、オートフィルタに係るVBAについて質問させてください! A列にりんごやぶどうなど果物の名前が入っているデータがあり、K列までデータが 入っています。(B列以降は果物の個数や値段のデータなので、果物の名前はA列のみです。)うち、「りんご」、「みかん」、「もも」、「いちご」のデータのみを抽出したいため、以下のようなVBAを記述しました。 しかし、実行したところエラーコード1004「RangeクラスのAutofillメソッドが失敗しました。」というメッセージが出てきたため、処理ができませんでした。 何か範囲の指定方法が間違っているのでしょうか…? ご教示いただけるととても嬉しいです。 よろしくお願いいたします。 Rows("1:1").AutoFilter ActiveSheet.Range("A1:K" & Cells(1).CurrentRegion.Rows.Count).AutoFilter Field:=1, Criteria1:= _ Array("りんご", "みかん", "もも", "いちご"), Operator:=xlFilterValue

  • EXCEL2000のVBAでオートフィルタの条件について

    いつもお世話になります。 VBAでオートフィルタの条件を、4/1~4/30まで指定する時に、 AutoFilter Field:=1, Criteria1:=">=2003/4/1", _ Operator:=xlAnd, Criteria2:="<=2003/4/30" というような式になると思うのですが、この日付の条件「>=2003/4/1」と「<=2003/4/30」をあらかじめシートのA1とB1セルに入力しておき、 AutoFilter Field:=1, Criteria1:="A1", _ Operator:=xlAnd, Criteria2:="B1" としたいのですが、このままでは、当然検索条件自体が「A1」「B1」となってしまいますよね。。。 セルを指定することって、できますでしょうか? 宜しくお願いします。

  • オートフィルターの使い方

    マクロでオートフィルタを使おうと思っているのです。 作成したリストの中で、日付でフィルタしようと思い 下記を作成してみましたがうまくいきません。 Worksheets("シート名").Range("A2").AutoFilter Field:=30, Criteria1:="<=2004/9/30", Operator:=xlAnd = 1, Criterial2:=">=2004/9/1" 条件と致しましては任意の期間(例:2004/9/1~2004/9/30)を抽出条件としたいのですが・・・ 又、セルには空白も存在します。 宜しくお願いいたします。

  • VBAでオートフィルタを使った抽出がうまくいきませんのでどなたか教えて

    VBAでオートフィルタを使った抽出がうまくいきませんのでどなたか教えてください。 A列、C列に日付が入っていて、A列は空白以外のセルを表示し、かつC列は、開始日、終了日で抽出したいのですが、うまくいきません。 With Worksheets("sheet").Activate 開始日 = ">=" & TextBox1.Text 終了日 = "<=" & TextBox2.Text .Range("A1:N200").AutoFilter Field:=1, Criteria1:="<>" .Range("A1:N200").AutoFilter Field:=3, _ Criteria1:=開始日, Operator:=xlAnd, _ Criteria2:=終了日

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

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

  • EXCEL2003のオートフィルターで、今日又は昨日をマクロで抽出した

    EXCEL2003のオートフィルターで、今日又は昨日をマクロで抽出したいのです。 2007の、日付フィルターに相当するものになります。 (1)http://q.hatena.ne.jp/1131101536 を参考にして、 Selection.AutoFilter Field:=1, Criteria1:="=" & Date, Operator:=xlAnd としましたが(A列に日付データが入っています)、実行すると「2010/05/28」で検索され抽出されません。 手打ちで「2010/05/28」を「2010/5/28」に変更すると抽出されました。 (2)使用していないH1セルへ「=today()」と入れ、  Criteria1: Range("H1") としましたが、シリアル値で検索されるためかやはり出ませんでした。元のデータはもちろんシリアル値なので、表示はyyyy/mm/ddに設定しています。 (3)次に  Criteria1:="=" & Range("H1") としましたが、(1)と同じ結果になってしまいました。 うまくフィルタリングするにはどうすればよいか教えてください。

  • エクセルVBAでオートフィルタの結果をコピーして別シートに貼り付け

    よろしくお願いします。今下のようにコードを書いています。 見よう見まねですが・・・。 追加情報の範囲をデータシートのデータのある最終行の下に 入れるものなのですが、 追加情報シートでオートフィルタをかけてから、その結果を 貼り付けたいのですが、コードをどのようにつなげたらいいか 教えていただけないでしょうか。 追加情報シートのBD列で、0より大きい値を抽出して、それを 元の(下のコード)のようにサイズを変更して、貼り付けたいと思います よろしくお願いします。 With Worksheets("追加情報").Range("AA1").CurrentRegion .Offset(1, 2).Resize(.Rows.Count - 1, .Columns.Count - 2).Copy End With Worksheets("データ").Range("C65536").End(xlUp).Offset(1). _ PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False Sub オートフィルタ() Range("BD1").Select Selection.AutoFilter Selection.AutoFilter Field:=30, Criteria1:=">0", Operator:=xlAnd 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 というエラーです。 何が悪いのか分かりません・・・。 分かる方いましたらご教授ください。よろしくお願いします。

  • マクロ 日付 オートフィルター

    いつも回答して頂きとても感謝しています。 日付の範囲をオートフィルターで抽出しようとしましたが、抽出されませんでした。 マクロのステップでオートフィルター実行の所まで動かし、フィルターの状態を確認した所、日付が入力されている列で実行されていました。フィルターの中身を確認した所、日付が2013/8/16(月)等で表示されていました。(aaa)の箇所のみ削除して実行した所、抽出が上手くいきました。 試しに、セル書式のユーザー設定でyyyy/m/d (aaa)と入力し、見た目の表示を合わせましたが無駄に終わりました。何が原因で、何処の記述を変えればいけるのでしょうか?宜しくお願い致します。 変数の最初,最後,終了1,開始2は全て Date です。 最初 = Format(開始2, "yyyy/m/1") If 終了1 < Format(DateAdd("m", 1, 開始2), "yyyy/m/d") Then 最後 = 終了1 Else 最後 = DateAdd("d", -1, DateAdd("m", 1, 最初)) End If With ws1 MaxR = .Cells(Rows.Count, 2).End(xlUp).Row MaxC = .Cells(2, Columns.Count).End(xlToLeft).Column 日付c = .Rows(2).Find(what:="発生日時", LookIn:=xlValues, _ lookat:=xlWhole, searchorder:=xlByColumns, _ searchdirection:=xlNext).Column .Range(.Cells(2, 日付c), .Cells(MaxR, MaxC)).Sort _ Key1:=.Cells(2, 日付c), order1:=xlAscending, Header:=xlYes If .AutoFilterMode = True Then .AutoFilterMode = False End If .Cells(2, 日付c).AutoFilter field:=1, Criteria1:=">=" & 最初, Operator:=xlAnd, _ Criteria2:="<=" & 最後