
マクロの記録から下記のマクロを作成しました。R列に該当データがある場合は正常に処理されますが、なかった場合、E2:M407、E448:M1035 の全データが削除されてしまいます。
R列にAC2のデータがなかった場合に処理を中止する方法を教えてください。
Sub Macro1()
Application.ScreenUpdating = False
a = Range("AC2")
Range("E2:M407").Select
ActiveSheet.Range("$A$1:$Y$1666").AutoFilter Field:=18, Operator:= _
xlFilterValues, Criteria2:=Array(1, a)
Selection.ClearContents
ActiveSheet.Range("$A$1:$Y$1666").AutoFilter Field:=18
Range("E448:M1035").Select
ActiveSheet.Range("$A$1:$Y$1666").AutoFilter Field:=18, Operator:= _
xlFilterValues, Criteria2:=Array(1, a)
Selection.ClearContents
ActiveSheet.Range("$A$1:$Y$1666").AutoFilter Field:=18
Application.ScreenUpdating = True
End Sub
No.3
- 回答日時:
最初に、
Selection.SpecialCells(xlCellTypeVisible).ClearContents
で消えてしまうというのは、Excelのバージョンはいくつですか?
Excelのバージョンによって変わってしまうのかもしれません。
私には、どうもよく分からない点があります。
Criteria2:=Array(1, a)
Criteira の中は、基本的に、String 型だったと思うのです。今の状態だと、ヒットしないように思います。もしくは、最初から、文字列で入れるかどちらかだと思います。
たぶん、aも、数値ではないかと思います。
行を数えるのは、このように、Subtotal 関数を使うのが、手っ取り早いと思います。
----------------
Dim a As Variant
Application.ScreenUpdating = False
With ActiveSheet
.AutoFilterMode = False
a = Range("AC2").Value 'aが数字だったら、CStr関数を使う
.Range("$A$1:$Y$1666").AutoFilter Field:=18, _
Criteria1:=Array(CStr(1), CStr(a)), _
Operator:=xlFilterValues
If WorksheetFunction.Subtotal(3, .AutoFilter.Range.Columns(1)) > 1 Then
'1 はタイトル行のことです。
.Range("E2:M407").ClearContents
End If
.AutoFilterMode = False
'----同じパターン----
End With
'//
それと、私のところのExcel 2013では、Criteria1 がない場合も、エラーになります。
ヘルプにはこう書かれています。(Excel2013にはヘルプがありませんので、下位バージョンで調べました)
----------------------------
2 番目の抽出条件となる文字列を指定します。引数 Criteria1 および引数 Operator と組み合わせて使い、複合抽出条件を指定します。
回答ありがとうございます。
動作環境はWindows10,Excel2010です。
試させていただきましたが、R408~R447に処理されないデータがあるためか正常に処理されないようです。
No.1
- 回答日時:
こんにちは!
1行目が項目行でデータは2行目以降にあるのですね?
>Selection.ClearContents
を
If Cells(Rows.Count, "A").End(xlUp).Row > 1 Then
Selection.ClearContents
End If
としてみてはどうでしょうか?m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Sheet3から2つの条件でオートフィルターで抽出した個数をSheet2へ入力するマクロで、一つ目の 4 2023/01/12 23:40
- Visual Basic(VBA) エクセル VBA 処理スピードを上げたいのですが。 6 2023/03/31 20:52
- Excel(エクセル) ExcelVBAについて。 2 2022/12/10 20:08
- Visual Basic(VBA) 前回質問の続きになりますが、下記マクロでシート1からシート2の抽出項目セルB3「りんご」とセルC2「 2 2022/12/02 17:37
- Visual Basic(VBA) excelVBAについて。 4 2022/11/21 16:15
- Visual Basic(VBA) データのある範囲を選択するVBAについて 2 2022/09/03 00:20
- Excel(エクセル) excelVBAについて。 8 2022/12/11 13:47
- Visual Basic(VBA) excelVBAについて。 1 2022/11/30 06:16
- Visual Basic(VBA) VBAのフィルター操作 5 2023/08/08 09:48
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
このQ&Aを見た人はこんなQ&Aも見ています
-
excelのマクロで該当処理できなければ飛ばして進むにはどうすればよいのでしょうか
Visual Basic(VBA)
-
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
-
4
vba フィルター 複数条件 3つ以上 完全一致除外
Visual Basic(VBA)
-
5
オートフィルターをかけ、#N/A以外で絞込みするVBA記述をご教示ください
Excel(エクセル)
-
6
B列の最終行までA列をオートフィル
Visual Basic(VBA)
-
7
Filter関数を用いた結果、何も検索されなかった場合
Visual Basic(VBA)
-
8
マクロ オートフィルタの検索値を所定のセルから参照
Excel(エクセル)
-
9
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
10
エクセルVBAでオートフィルター最上行を取得するには
Excel(エクセル)
-
11
VBA 見つからなかった時の処理
Excel(エクセル)
-
12
特定の文字を含むシートだけマクロ処理をしたい
Visual Basic(VBA)
-
13
VBAでのリスト不一致抽出について
Visual Basic(VBA)
-
14
VBA Cのセルが空白でなかったら、Aのセルに順番に数値を入力
Visual Basic(VBA)
-
15
指定した文字があった場合、その行を削除するマクロが欲しいです
Excel(エクセル)
-
16
VBAで文字列を数値に変換したい
Excel(エクセル)
-
17
Excelオートフィルタで複数のセルの値を参照して抽出したい
Excel(エクセル)
-
18
【VBA】特定列に文字が入っていたらそのセル行をコピーしてマスターブックの同じ行に貼り付けたい
その他(Microsoft Office)
-
19
Excel VBAで同じフォルダ内のファイルを開くには?
Excel(エクセル)
-
20
エクセルVBAで、条件に一致するセルへ移動
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
9月17日でサービス終了らし...
-
エクセル ドロップダウンリスト...
-
特定のセルだけ結果がおかしい...
-
エクセルのdatedif関数を使って...
-
エクセルの循環参照、?
-
【関数】同じ関数なのに、エラ...
-
【マクロ】列を折りたたみ非表...
-
【マクロ】【配列】3つのシー...
-
【マクロ】アクティブセルの時...
-
iPhoneのExcelアプリで、別のシ...
-
【マクロ】EXCELで読込したCSV...
-
【条件付き書式】シートの中で...
-
【マクロ】3行に上から下に並...
-
【マクロ】オートフィルターの...
-
【マクロ】A列にある、日付(本...
-
vba テキストボックスとリフト...
-
エクセル
-
【エクセル】期限アラートについて
-
Excel 複数のセルが一致すると...
-
【マクロ】WEBシステムから保存...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelファイルを開くと私だけVA...
-
エクセルについてどう関数を使...
-
マクロ・VBAで、当該ファイルの...
-
エクセルのセルに画像は埋め込...
-
エクセルで、一部のセルだけ固...
-
【マクロ、画像あり】A表かB表...
-
エクセルでカウントする
-
【マクロ】コードを少しでも、...
-
VBA_日時のソート
-
エクセルで教えてください。 例...
-
エクセル 月間シフト表で曜日ご...
-
セルの左に余白を付ける
-
エクセル
-
エクセルについて教えてください
-
2枚のエクセル表で数字をマッチ...
-
ExcelのIF関数との組み合わせの...
-
エクセルのファイルのコピーを...
-
エクセルで二つのブックの違い...
-
空白処理を空白に
-
Excelのチェックボックスについ...
おすすめ情報
tom04 様 回答ありがとうございます。
A列には有効なデータがないためAをEに変えて試しましたが、やはり該当データがない場合は範囲内のすべてのデータが消えてしまいます。