オートフィルタをマクロで書いたのですが、一部うまくいかなくて困っています。
わかる方がいらしたらぜひご教授ください。
商品情報というブックがあり、抽出シート(1枚目)と2枚目のシートにデータが入っています。
2枚目のシートのフィールド名を抽出シートのA1を基準に貼り付けています。
条件をA1:I2に入力し、2枚目のシートの条件に合うものを抽出シートのA5以降に取り出すマクロを書いています。次回マクロを起動させたときにA5以降にデータがあれば削除させます。
そこで問題なのですが、A1:I2の条件だとA列からI列までのフィールド名に対する条件を
1行入力することができますが、同じ行になるのでAND条件になってしまいます。
本当は条件列をI3までにして、条件を2行にわたって書いて または条件も検索したいのです。
ただ、または条件は入力する場合と入力がない場合があります。
条件をA1:I3(3行目)に変更してマクロを実行すると、または 条件がある場合はちゃんとでるのですが、条件がない場合はすべてでてきてしまいます。
どのようにすればA1:I3に変更して、2行目と3行目に条件があった場合はその条件で該当するものを
抽出し、特に3行目に条件がない場合は2行目だけの条件で抽出できるのでしょうか?
(2行目のAnd条件検索と3行目のまたは条件検索ができますでしょうか?)
Dim myRow1 As Long, myRow2 As Long
myRow1 = Sheets(2).Range("A" & Rows.Count).End(xlUp).Row
myRow2 = Sheets("抽出").Range("A" & Rows.Count).End(xlUp).Row
If myRow2 >= 5 Then
Sheets("抽出").Range("A5:I" & myRow2).ClearContents
Sheets("抽出").Range("A5:I" & myRow2).ClearFormats
End If
Sheets(2).Range("A1:I" & myRow1).AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Worksheets("抽出").Range("A1:I2"), CopyToRange:=Sheets("抽出").Range("A5"), Unique:=False
End Sub
No.2ベストアンサー
- 回答日時:
>CriteriaRange:=Worksheets("抽出").Range("A1:I2")
ここを以下のように変更する。
Sheets(2).Range("A1:I" & myRow1).AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=Sheets("抽出").Range("A1").CurrentRegion, _
CopyToRange:=Sheets("抽出").Range("A5"), Unique:=False
なお、Sheets(2)もIndex番号ではなくちゃんとシート名にした方がいいかと。
以上です。
No.1
- 回答日時:
フィルタオプションの検索条件範囲を自動的に検出したいということでしょうか?
その場合は、myRow1の部分を以下のように変更してみてください。
myRow1 = Sheets(2).Range("A1").CurrentRegion.Rows.Count
この回答への補足
ご指示ありがとうございます。
フィルタオプションの検索条件範囲を自動的に検出したいということでしょうか?
そうです。下記のRange("A1:I2")のところをI3にしてしまうと3行目に何も入ってないと
全データがでてきてしまいますので、範囲が("A1:I3")になっていて3行目に何も入っていなければ
2行目のみで検索。3行目に何か書いてあれば2・3行目を使って検索をさせたいのです。
または自動的に条件が入っているかどうかを判断して検索するようなことをしたいのです。
別に下記の記述にこだわっているわけではないのですが・・・。
myRow1 = Sheets(2).Range("A1").CurrentRegion.Rows.Count
はmyRow1,myRow2と記述している一番冒頭に書くのでしょうか?
書いてみたのですがうまくいきません。
これはシート2に入っているデータの行の最終行という意味ではないのでしょうか?
Sheets(2).Range("A1:I" & myRow1).AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Worksheets("抽出").Range("A1:I3"), CopyToRange:=Sheets("抽出").Range("A5"), Unique:=False
お手数ですがご指導よろしくおねがいいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Sheet3から2つの条件でオートフィルターで抽出した個数をSheet2へ入力するマクロで、一つ目の 4 2023/01/12 23:40
- Visual Basic(VBA) Sheet2の日付をキーにオートフィルターで2023年1月のデータを抽出し、Sheet3へ書き出すた 2 2023/03/06 23:57
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Excel(エクセル) ワードのマクロについて教えてください。 1 2023/03/11 13:50
- Visual Basic(VBA) 前回質問の続きになりますが、下記マクロでシート1からシート2の抽出項目セルB3「りんご」とセルC2「 2 2022/12/02 17:37
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) AdvancedFilterについての質問 2 2022/07/02 22:58
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESS クエリの抽出条件に他の...
-
ACCESSのクエリで抽出条件「ま...
-
ACCESSの時間帯の抽出について
-
PCゲームから音声ファイルを抽...
-
ACCESS 「パラメータの入力」...
-
Accessクエリーでチェックボッ...
-
Access 抽出した重複データを一...
-
access クエリの抽出条件を入れ...
-
元データから連続5日以上だった...
-
クエリで不等号を含んだ条件式...
-
アクセス(2007)で抽出/除外の...
-
Access テーブルを分割してエク...
-
アクセスのクエリで空白データ...
-
Access 日付抽出について
-
アクセスでの抽出方法(日付+時...
-
アクセス・クエリの抽出条件(...
-
Access:クエリの複数『or条件...
-
Accessで「式で型が一致しません...
-
ACCESSのクエリで集計
-
アクセス2000で、DBの0と空白以...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESS 「パラメータの入力」...
-
ACCESSのクエリで抽出条件「ま...
-
ACCESS クエリの抽出条件に他の...
-
ACCESSの時間帯の抽出について
-
アクセス・クエリの抽出条件(...
-
Access テーブルを分割してエク...
-
エクセルのマクロで検索・抽出...
-
accessの日付フィールドから前...
-
PCゲームから音声ファイルを抽...
-
最大値以外の抽出方法
-
access クエリの抽出条件を入れ...
-
アクセスでの抽出方法(日付+時...
-
Accessクエリーでチェックボッ...
-
クエリの進行状況を知りたい。
-
ACCESS クエリで”1”でないもの...
-
ACCESS クエリの抽出条件を動的...
-
ACCESSのクエリで集計
-
Accessで「式で型が一致しません...
-
元データから連続5日以上だった...
-
Access 2003 iif [日付フィール...
おすすめ情報