• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:色の条件で判別し、シートを分けたい)

色の条件で判別し、シートを分けたい

このQ&Aのポイント
  • 質問文章の要点は、特定の条件(色の条件)でシートを分けたいということです。具体的には、アンマッチングデータを1対多の形式で保存し、色を番号で判別してフィルタをかけてコピーする方法を模索しています。
  • 現在はマクロを利用して行を指定して色判別をしており、不要な行を削除する手続きも行っています。しかし、コピーに時間がかかってしまう問題があります。
  • 効率的な方法で色の条件でデータを分ける方法を教えていただきたいと思います。

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

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

空白行があり色は無視して、振り分け先のシートの1行目は空いてしまいますが こんな方法もあります。 ⇒色による識別が必要な場合はスル~して下さい。 Sub try() Dim r As Range Dim rr As Range, rs As Range For Each r In Range("A:A").SpecialCells(xlCellTypeConstants, 3).Areas Set rr = r.Item(1) Set rs = r.Offset(1).Resize(r.Rows.Count - 1) Worksheets("Sheet4").Cells(Rows.Count, 1).End(xlUp).Offset(1).Value = rr.Value Worksheets("Sheet5").Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(rs.Rows.Count).Value = rs.Value Next End Sub

cat3850
質問者

お礼

回答者:n-jun 様 ありがとうございます。 教えていただいたマクロですが、 該当する行ごと別のシートにコピーしたいと考えています。 その場合は、offsetではなくRowsで指定すればOKでしょうか。 ※作っていただいたマクロで勉強させていただきます。  本当にありがとうございました。

cat3850
質問者

補足

教えていただいたマクロで、私が作ったテストデータはOKだったのですが、今後、色での識別のほうが便利だろうということでした。 色の番号を取り出すことはできましたが、そこから先・・・ ピンクの行は、sheet4に行をコピー ブルーの行は、sheet5に行をコピー 空白は無視 というようなマクロを組んでみたいです。 ご教授よろしくお願いいたします。

その他の回答 (2)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.3

n-junです。 ついでですが。 >その場合は、offsetではなくRowsで指定すればOKでしょうか。 この場合だとEntireRowですね。 こんな感じかなって思います。 Sub try3() Dim r As Range Dim rr As Range, rs As Range For Each r In Range("A:A").SpecialCells(xlCellTypeConstants, 3).Areas Set rr = r.Item(1).EntireRow Set rs = r.Offset(1).Resize(r.Rows.Count - 1).EntireRow Worksheets("Sheet4").Cells(Rows.Count, 1).End(xlUp).Offset(1).EntireRow.Value = rr.Value Worksheets("Sheet5").Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(rs.Rows.Count).EntireRow.Value = rs.Value Next End Sub

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

n-junです。 >その場合は、offsetではなくRowsで指定すればOKでしょうか。 Resizeで良いのではないかと。 コードはA列からJ列(10)としてますので、適宜修正願います。 Sub try2() Dim r As Range Dim rr As Range, rs As Range For Each r In Range("A:A").SpecialCells(xlCellTypeConstants, 3).Areas Set rr = r.Item(1).Resize(, 10) 'J列 Set rs = r.Offset(1).Resize(r.Rows.Count - 1).Resize(, 10) 'J列 Worksheets("Sheet4").Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(, 10).Value = rr.Value Worksheets("Sheet5").Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(rs.Rows.Count, 10).Value = rs.Value Next End Sub

関連するQ&A