ある一覧表があり、その中のC列のセルにある条件を満たしていれば背景色をつけています。
この色付セルがある行全体を別のシートに順次コピーして一覧表を作成させるマクロを以下のように作ってみました。
h = 6
For i = 7 To 最終行
If Worksheets("一覧表").Cells(i, "C").Interior.ColorIndex = 背景色番号 Then
Sheets(1).Select
Rows(i).Copy
Sheets(2).Select
h = h + 1
Rows(h).Select
ActiveSheet.Paste
End If
Next
データが少ないときはこれで問題がなかったのですが、件数が増えてきますと処理時間がかなり掛かります。4000件のデータで30分経っても終わりませんでした。
もっと処理時間が短くなるスマートな方法はありませんでしょうか?
No.1ベストアンサー
- 回答日時:
以下のようにSelectするのをやめ、Application.ScreenUpdating = Falseで画面の更新を一時停止するだけで飛躍的に早くなります。
h = 6
Application.ScreenUpdating = False
With Worksheets("一覧表")
For i = 7 To 最終行
If .Cells(i, "C").Interior.ColorIndex = 背景色番号 Then
h = h + 1
Sheets(1).Rows(i).Copy Sheets(2).Rows(h)
End If
Next i
End With
Sheets(2).Activate
Application.ScreenUpdating = True
もしSheets(1)とWorksheets("一覧表")が別物なら
ところでSheets(1)はWorksheets("一覧表")のことでしょうか?
そうであれば
Sheets(1).Rows(i).Copy Sheets(2).Rows(h) は
.Rows(i).Copy Sheets(2).Rows(h) だけでかまいません。
回答ありがとうごさいます。
教えていただいた記述で実行しますと、4000件のデータがものの1分で終了しました。
本当に助かりました。ありがとうございました。
No.2
- 回答日時:
シート1と同じ行に同じ色を付けるという操作のように見られますね。
それでしたらシート1の全体を選択してコピーし、シート2に書式のみを貼り付けることで良いように思いますね。No.3
- 回答日時:
>C列のセルにある条件を満たしていれば背景色をつけています。
C列を「その条件」でオートフィルタを使って絞り込み,いちどにコピーしてしまいます。
with worksheets("一覧表")
.range("A6:Z" & .range("C65536").end(xlup).row).autofilter field:=3, criteria1:=">100"
.autofilter.range.copy destination:=worksheets("Sheet2").range("A6")
.autofiltermode = false
end with
この回答への補足
説明不足ですいません。ある条件というのは特定のセルで判断するのではなく、その行の複数セルを判断してということですので、目で見て地道に色を付けています。
merlionXXさんの回答で解決しました。
ありがとうございました。
No.4
- 回答日時:
毎回シートを切り替えずに処理すれば4000行程度なら即座に終わるかと思います。
これはmerlionXXさんが書かれているコードに変更すればよいですが、7行目から開始するのにh=6 とし i=7~~ となっているのは間違いの元になりやすそうでちょっと怖いしスマートじゃない気がします。細かいことですが、他の人や自分でも後からコードを参照する場合に理解しづらくなりますので。
なので下記のように修正されることをお勧めします。
Const StartRow As Integer = 7:'処理開始行
Const EndRow As Integer = 最終行:'処理終了行
h = StartRow
~中略~
For i = StartRow To EndRow
~中略~
'h=h+1を削除
Sheets(1).Rows(i).Copy Sheets(2).Rows(h)
h=h+1:'こちらに移動
~以下略~
ご指摘ありがとうございます。
できるだけ第3者が見ても理解できるものをと心がけていますが、他のところに気をとられて不親切な記述になっていました。
merlionXXさんの記述に変更を加え、無事解決しました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) マクロ実行時、自動で背景色を変えたい。 C列にあるチェックボックスをチェックするとB列に「TRUE」 4 2022/11/08 11:14
- Excel(エクセル) マクロで最終行から上に検索を逆にしたい 1 2022/05/17 18:27
- Visual Basic(VBA) 最終行の指定について教えてください。 複数シートを1シートへまとめる下記マクロでは各シートの6行目を 1 2022/10/04 18:37
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい 9 2022/08/24 13:23
- Visual Basic(VBA) コード名シートA列と集計シートA列のコードが一致したら、コード名シートA5からk12の範囲をコピーし 1 2022/08/29 23:46
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Excel(エクセル) VBAのoffsetの動き方について教えてください 3 2022/11/25 23:36
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
VBマクロ 色の付いたセルを含む行をコピーしたい。
Visual Basic(VBA)
-
複数シートの色付きセルがある行を別シートに抽出
Excel(エクセル)
-
excelのデータで色つき行の抽出方について教えてください
Excel(エクセル)
-
-
4
エクセルでマクロにてセル色と文字を他シートのセルへコピーしたい
その他(コンピューター・テクノロジー)
-
5
複数シートに色付きセル(条件つき書式で設定済み)の行を別シートに抽出
Visual Basic(VBA)
-
6
エクセルで色の付いたセルを抽出したいです
Excel(エクセル)
-
7
エクセルで色の変更を他のシートに反映させるには
Access(アクセス)
-
8
EXCELにて複数列を同条件(色)で一括フィルタリングする
Excel(エクセル)
-
9
【Excel】 セルの色での判断はできますか?
Excel(エクセル)
-
10
セル色なしの行一括削除
その他(プログラミング・Web制作)
-
11
あるセルに色を付けた時、別のセルにも同じ色が付く
Excel(エクセル)
-
12
VBAで条件が一致する行のデータを別シートに抽出
Excel(エクセル)
-
13
エクセルのシートリンクで,色もリンクさせる方法
Excel(エクセル)
-
14
エクセル:色の付いたデータをまとめて抽出したい。
Excel(エクセル)
-
15
マクロで#N/A"のエラー行を削除したい"
Visual Basic(VBA)
-
16
エクセル 重複したデータを別シートに抽出させる
Excel(エクセル)
-
17
Excel VBA で色付きのセルの値を取得する
Excel(エクセル)
-
18
エクセルVBAで、値が入っている最終行の、右隣の値をコピーして、別のセルに貼り付けるコード
Excel(エクセル)
-
19
【VBA】特定の値が入った行をコピーして別シートに貼り付ける方法をおしえていただきたいです。
Excel(エクセル)
-
20
特定の色のついたセルを削除
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで別シートの同じ位置...
-
ワークシートの行が途中から表...
-
エクセルの下部のシートタブの...
-
エクセルでセルの書式設定がで...
-
Excelで大量の2000個のリストを...
-
ロックしたセルのコピー&貼り付け
-
Excelで保護のかかったシートの...
-
シート全体を他のブックのシー...
-
excelで勝手にテキストボックス...
-
EXCELで複数シート作成後、全シ...
-
エクセルで数式は残したまま他...
-
エクセルで選択した行以外を削...
-
VBA アクティブでないシートの...
-
エクセルで多数のシートをまと...
-
VBAで新しいエクセルファイルに...
-
【エクセル】表から条件に合っ...
-
Excelセルの書式設定ができない
-
行の挿入ができなくなった
-
シート保護したExcelへの画像貼...
-
1から5までの整数のみ入力可に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで別シートの同じ位置...
-
エクセルでセルの書式設定がで...
-
エクセルの下部のシートタブの...
-
EXCELでコピーしたグラフのデー...
-
シート全体を他のブックのシー...
-
ワークシートの行が途中から表...
-
ロックしたセルのコピー&貼り付け
-
excelで勝手にテキストボックス...
-
Excelで保護のかかったシートの...
-
エクセルで数式は残したまま他...
-
VBA アクティブでないシートの...
-
Excelで大量の2000個のリストを...
-
エクセルで打ち込んだ数字を自...
-
シート保護してても並び替えを...
-
【エクセル】表から条件に合っ...
-
【エクセル】数式のセル番地を...
-
シート保護したExcelへの画像貼...
-
コピー&ペーストすると、VLOOK...
-
EXCELで複数シート作成後、全シ...
-
エクセルで多数のシートをまと...
おすすめ情報