オートフィルタ機能を使い、指定期間内のデータを抽出するようにマクロを組みたい。指定期間が一定ではないので変数を設定したいのですがうまくいきません。下記はマニュアルで入力したものをマクロに記録したものです。指定期間は他のBookのセルに入力画面として設けてあります。例えばBook2/B1(開始)~B2(終了)。
Range("A1").Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:=">=2005/8/21", Operator:=xlAnd _
, Criteria2:="<=2005/9/20"
Range("C1").Select
End Sub
A 回答 (6件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
私の下記例では
Book2のSheet2のB1に2005/5/1
B2に2005/5/20 が入っています。
Book5のSheet3のA1:B10に
日付分類
2005/1/2a
2005/3/1s
2005/5/1d
2005/7/12f
2005/5/12g
2005/8/23h
2005/5/25j
2005/5/19fg
2005/6/29t
があります。
Book5の標準モジュールに下記があります。
Sub test02()
Workbooks.Open "Book2.xls"
x = Workbooks("Book2.xls").Worksheets("sheet2").Range("B1").Value
MsgBox x
y = Workbooks("Book2.xls").Worksheets("sheet2").Range("B2").Value
MsgBox y
Workbooks("Book5.xls").Worksheets("Sheet3").Activate
ActiveSheet.Range("a1:B7").Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:=">=" & x, Operator:=xlAnd, _
Criteria2:="<=" & y
End Sub
を実行すると
日付分類
2005/5/1d
2005/5/12g
2005/5/19fg
となりました。
ブック名、シート名の対応を誤らずに自分の場合に置き換え、実行してみてください。
No.4
- 回答日時:
こんばんは。
rcn4132さん、KenKen_SPさんへ
おせっかいのようですが、
KenKen_SPさんのコードの中の
>strFormat = .Range("A2").NumberFormat
'オートフィルター設定
そこは、NumberFormtLocal のほうが良いようですよ。
一度、比較してみてください。
後は、KenKen_SPさんとは変わらないので、コードは書きませんが、日付の検索は、結構、むつかしいです。
AutoFilterのデータどおりの検索値にするためには、Format関数で、Selectionでしたら、Selection.Cells(2,1).NumberFormatLocal にあわせないといけないわけです。
(Selectio.Cells(2,1)というよりは、Range("A1").CurrentRegion.Cells(2,1)... ですが。)
どこかで、私も書いたけれども、AutoFilterは、まだ、バグのような、おかしな部分があるので、記録マクロ≠VBAコードなのです。
No.3
- 回答日時:
どう上手く行かないのでしょう?
条件指定部分を置き換えてあげればOKかと思いますが、、、
Sub Test()
Dim st As String, ed As String
ThisWorkbook.Activate
With Application
st = Application.InputBox("yyyy/m/dで入力", "開始日", Type:=2)
ed = Application.InputBox("yyyy/m/dで入力", "終了日", Type:=2)
End With
ActiveSheet.Range("A1").AutoFilter Field:=1, _
Criteria1:=">=" & st, Operator:=xlAnd, _
Criteria2:="<=" & ed
End Sub
上記が上手くいくなら、条件を書き換えればOK
st = Workbooks("Book2.xls").Worksheets(1).Range("B1").text
ed = Workbooks("Book2.xls").Worksheets(1).Range("B2").text
No.2
- 回答日時:
こんにちは。
KenKen_SP です。こんな感じでしょうか?
Sub Sample()
Dim Sh1 As Worksheet
Dim Sh2 As Worksheet
Dim strFormat as String
'フィルターをかけるブック&シート
Set Sh1 = Workbooks("Book1.xls").Sheets("Sheet1")
'フィルターの条件のあるブック&シート
Set Sh2 = Workbooks("Book2.xls").Sheets("Sheet1")
With Sh1
'オートフィルターを初期化するなら次行のコメント解除
'If .FilterMode Then .Range("A1").AutoFilter
'フィルターをかけるセルの書式を取得
strFormat = .Range("A2").NumberFormat
'オートフィルター設定
.Range("A1").CurrentRegion.AutoFilter _
Field:=1, _
Criteria1:=">=" & Format$(Sh2.Range("B1").Value, strFormat), _
Operator:=xlAnd, _
Criteria2:="<=" & Format$(Sh2.Range("B2").Value, strFormat)
End With
Set Sh1 = Nothing
Set Sh2 = Nothing
End Sub
No.1
- 回答日時:
Book2のSheet1のB1に >=2005/8/21
B2に <=2005/9/20 として、
Sub MACRO1()
Range("A1").Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, _
Criteria1:=Workbooks("Book2.xls").Sheets("Sheet1") _
.Range("B1").Value, Operator:=xlAnd, _
Criteria2:=Workbooks("Book2.xls").Sheets("Sheet1") _
.Range("B2").Value
Range("C1").Select
End Sub
これで、出来ませんか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) データのある範囲を選択するVBAについて 2 2022/09/03 00:20
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- Visual Basic(VBA) Sheet2からオートフィルターで売上日を抽出した件数をカウントし、その件数をSheet1のセルB1 2 2023/01/12 12:24
- Visual Basic(VBA) Sheet2の日付をキーにオートフィルターで2023年1月のデータを抽出し、Sheet3へ書き出すた 2 2023/03/06 23:57
- Excel(エクセル) ExcelVBAについて。 2 2022/12/10 20:08
- Visual Basic(VBA) Sheet3から2つの条件でオートフィルターで抽出した個数をSheet2へ入力するマクロで、一つ目の 4 2023/01/12 23:40
- Excel(エクセル) ワードのマクロについて教えてください。 1 2023/03/11 13:50
- Visual Basic(VBA) マクロで最終行を取得してコピーしたい 3 2022/04/06 19:07
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでオートフィルタのボ...
-
エクセルで時刻(8:00~20:00)...
-
エクセルのオートフィルタで最...
-
Excelのオートフィルタで非表示...
-
Excel時間データの抽出
-
Excelのフィルターで抽出した状...
-
エクセル・条件付で行を削除す...
-
エクセルにて、フィルタをかけ...
-
【Excel/関数/条件付き書式】月...
-
オートフィルタで3つ以上の条...
-
EXCEL VBAで条件付き保護について
-
エクセルの偶数行(奇数行)の抽出
-
Excelで、ブック中すべてのシー...
-
マクロで条件に合った行の選択...
-
エクセル INDEXとRANDBETWEEN
-
Excelオートフィルターで絞り込...
-
エクセルで指定期間内に在職す...
-
エクセル関数で、数字の入った...
-
オートフィルタの抽出が途中で...
-
スプレッドシートのチェックボ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで時刻(8:00~20:00)...
-
エクセルでオートフィルタのボ...
-
エクセルのオートフィルタで最...
-
Excelのオートフィルタで非表示...
-
【EXCEL】条件に一致した最新デ...
-
エクセルの偶数行(奇数行)の抽出
-
エクセルで、条件に一致した行...
-
access マクロでのフィルタの...
-
オートフィルタで3つ以上の条...
-
エクセルで検索窓のようなもの...
-
エクセル関数で、数字の入った...
-
Excel共有ブックのオートフィル...
-
Excelオートフィルターで絞り込...
-
データの抽出を教えてください
-
エクセル・条件付で行を削除す...
-
なぜShowAllDataだとうまく行か...
-
オートフィルタで選択したデー...
-
エクセル、オートフィルタで最...
-
可視セルを対象としたcountifが...
-
【Excel/関数/条件付き書式】月...
おすすめ情報