• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:セルに背景色がある行を別シートにコピー)

セルに背景色がある行を別シートにコピーする方法

このQ&Aのポイント
  • 質問内容は、ある一覧表の中のC列のセルに特定の条件が満たされている行を背景色付きで別のシートにコピーする方法についてです。
  • 質問者は、現在のコードでは処理時間が長いため、より効率的な方法を知りたいと述べています。
  • 4000件のデータで30分以上かかってしまい、スマートな方法を求めています。

質問者が選んだベストアンサー

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答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) だけでかまいません。

drymango
質問者

お礼

回答ありがとうごさいます。 教えていただいた記述で実行しますと、4000件のデータがものの1分で終了しました。 本当に助かりました。ありがとうございました。

drymango
質問者

補足

説明不足ですいません。 Sheets(1)とWorksheets("一覧表")は同じものです。

その他の回答 (3)

  • shut0325
  • ベストアンサー率40% (490/1207)
回答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:'こちらに移動 ~以下略~

drymango
質問者

お礼

ご指摘ありがとうございます。 できるだけ第3者が見ても理解できるものをと心がけていますが、他のところに気をとられて不親切な記述になっていました。 merlionXXさんの記述に変更を加え、無事解決しました。 ありがとうございました。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答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

drymango
質問者

補足

説明不足ですいません。ある条件というのは特定のセルで判断するのではなく、その行の複数セルを判断してということですので、目で見て地道に色を付けています。 merlionXXさんの回答で解決しました。 ありがとうございました。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

シート1と同じ行に同じ色を付けるという操作のように見られますね。それでしたらシート1の全体を選択してコピーし、シート2に書式のみを貼り付けることで良いように思いますね。

関連するQ&A

専門家に質問してみよう