![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
こんばんは。
下記のようなことを実行したいと思いコードを作ってみましたが処理に時間がかかります。
不要行を高速に削除できるようにしたいのでご教示ください。
・シート「1月」「2月」…「12月」の12枚のシートにすべて同じものが入っています。
・A列に月(数値のみ)が入っています。(約3000行)(K列までデータあり)
・シート月(数値)とA列の数値以外の場合、行を削除する
dim j as integer
dim k as integer
for k = 1 to 12
worksheets( k & "月").select
for j = cells(Rows.count,"A").end(xlup).row to 2 step -1
if cells(j,"A") <> k then
Row(j).delete
end if
next j
next k
end sub
No.1ベストアンサー
- 回答日時:
こんばんは
ひとまず、1行ずつではなくまとめて消す方式で…
※「シート月(数値)とA列の数値以外の場合」の意味がわからないので、コード中の
>cells(j,"A") <> k
という条件をそのまま利用しています。
※ 行を削除しますので、テスト環境でテストしてください。
Sub Sample_12122703()
Dim u, c, mon As Long
For mon = 1 To 12
Set u = Nothing
With Worksheets(mon & "月")
For Each c In Range(.Cells(1, 1), .Cells(Rows.Count, 1).End(xlUp))
If c.Value <> mon Then
If u Is Nothing Then Set u = c Else Set u = Union(u, c)
End If
Next c
If Not u Is Nothing Then u.EntireRow.Delete
End With
Next mon
End Sub
No.8
- 回答日時:
・画面描画の一時停止
・ワークシート再計算の一時停止
――を行うと、そこそこスピードアップしますよ。
https://www.bing.com/search?q=Excel+VBA+%E9%AB%9 …
No.7
- 回答日時:
#3です
>早速試した見たのですが、自分の入力が悪いのか1月から12月までのデータが消えてしまいます。
>A列の数値以外の場合
でしたね。
大変失礼しました。
#3コードは、A列の数値と同じの場合になっていました。
If Cells(i, "A") = myAry(k) Then を
If Cells(i, "A") <> myAry(k) Then とすると以外になると思います。
あらためて、読解力がない事で不要な時間を使わせてしまいました
すみません。
No.6
- 回答日時:
No1です
>end if が一つ足りませんよね?
足りなくはありません。
(文法エラーでも出ましたか? 私の環境では出ません。)
確認のため、No1をコピペで実行してみましたが、問題なく動作します。
>実行しましたがうまくできませんでした。
こちらの環境では、私が意図した通りの処理結果になります。
「うまくいかない」では何がどうなっているのかサッパリですが、多分、私がご説明の文章の解釈を間違えたのでしょうね。
ちなみに、何がどうなって「うまくいかない」のでしょうか?
後学のためにお知らせいただけるとありがたいです。
No.3
- 回答日時:
こんばんは、
>・シート「1月」「2月」…「12月」の12枚のシートにすべて同じものが入っています。
これ、信じていいのかな?良いのであれば、、かなり限定的な処理になってしまいますが、全シート纏めて削除が可能かと?
ただ、.Selectを使う事になるから早いかどうか、、
Sub Sample()
Dim i As Long, k As Long
Dim myAry As Variant
Dim myRng As Range
myAry = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
Sheets(Array("1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月")).Select
Sheets("1月").Activate
For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row
For k = 0 To UBound(myAry)
If Cells(i, "A") = myAry(k) Then
If myRng Is Nothing Then
Set myRng = Cells(i, "A")
Else
Set myRng = Union(myRng, Cells(i, "A"))
End If
Exit For
End If
Next k
Next i
If Not myRng Is Nothing Then
myRng.EntireRow.Select
Selection.Delete Shift:=xlUp
End If
'おまけ
Dim sh As Worksheet
For Each sh In Worksheets
sh.Select
Range("A1").Select
Next
Sheets("1月").Activate
End Sub
Selection.Delete Shift:=xlUp とおまけ部分をコメントアウトして
検証してください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
- Visual Basic(VBA) VBA 行削除した連番 4 2023/06/27 16:00
- Excel(エクセル) マクロで最終行から上に検索を逆にしたい 1 2022/05/17 18:27
- Visual Basic(VBA) コード名シートA列と集計シートA列のコードが一致したら、コード名シートA5からk12の範囲をコピーし 1 2022/08/29 23:46
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) 【VBA】特定のワードが入っている行全体を塗りつぶしたい 4 2022/04/20 15:22
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 空白行に転記する
-
マクロの「SaveAs」でエラーが...
-
EXCELのSheet番号って変更でき...
-
VBA別シートの最終行の次行へ転...
-
【VBA】特定の条件でセルをコピー
-
VBAのチェックボックスとボタン...
-
VBAコードについて
-
アクセスからエクセルへ出力時...
-
会社情報と注文内容が別々のシート
-
EXCEL VBA 転記 条件分岐 新...
-
マクロ実行後に別シートの残像...
-
RemoveDuplicatesメソッドにつ...
-
【Excel VBA】コピー&ペースト...
-
日々の注文集計表のシートを比...
-
VBAで変数の数/変数名を動的に...
-
マクロでシートからシートへの...
-
100万件越えCSVから条件を満た...
-
テキストボックスから、複数の...
-
ExcelのVBマクロを、バックグラ...
-
Excelマクロで不要な行を繰り返...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マクロの「SaveAs」でエラーが...
-
VBA 空白行に転記する
-
EXCELのSheet番号って変更でき...
-
マクロ実行後に別シートの残像...
-
Count Ifのセルの範囲指定に変...
-
VBA 別ブックからの転記の高速...
-
VBA別シートの最終行の次行へ転...
-
Changeイベントで複数セルへの...
-
複数シートの複数列に入力され...
-
ExcelのVBマクロを、バックグラ...
-
VBA 実行時エラー1004 rangeメ...
-
楽天RSSからエクセルVBAを使用...
-
【VBA】特定の条件でセルをコピー
-
100万件越えCSVから条件を満た...
-
Excel2013で切り取り禁止
-
VBAで変数の数/変数名を動的に...
-
アクセスからエクセルへ出力時...
-
Unionでの他のシートの参照につ...
-
グラフマクロで系列を変数にす...
-
Excel VBA オートフィルターで...
おすすめ情報