2017-06-13 11 views
0

私は、プルーニングが必要な多くのデータを持つExcelワークシートを持っています。IDとセルの値に基づいてExcelで行を削除する

データは、特定のIDに複数の行が付いたID番号で構成されています。一意のIDごとに、すべての行に特定のコード(B列にある)を保持する必要があります。私はまた、そのような行が存在する場合には、のすぐ上にの行を「キーパーコード」で保持する必要があります。そのような行が存在しない場合は、空白の行を挿入する必要があります。*

特定のIDに対して、「キーパーコード」がない場合は、IDに関連付けられたすべての行を削除する必要があります。 「キーパーコード」に関連付けられていない行または「キーパーコード」が付いた行のすぐ上にある行はすべて削除する必要があります。

おそらくスクリーンショットで最も詳しく説明されています。データはID番号でソートされます。

before

after

*空白行を挿入するといいことが、それは、コードを困難ならば、非常に必要ではないでしょう。

ありがとうございます!

+0

あなたの質問は、あまりにも広すぎるstackoverflowです。次の質問をする前に[ask]をお読みください。 –

+0

ご意見ありがとうございます。私はそのページを投稿する前に読んだ。残念ながら、それはどのように尋ねるのではなく、何を求めているのか(つまり、stackoverflowの範囲)を説明しています。それにかかわらず、あなたは私の謝罪をしています。 – Vooded

答えて

0

これを試してみてください、

Sub copyRows() 
Dim i As Long, j As Long 
Sheets.Add.Name = "newSheet" 
Rows(1).Copy Sheets("newSheet").Cells(1, 1) 
j = Sheets("newSheet").Cells(Rows.Count, 1).End(xlUp).Row + 1 
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row 
    If InStr(Cells(i, 2), "Keep") > 0 And Cells(i, 1) = Cells(i - 1, 1) Then 
     Rows(i - 1).Copy Sheets("newSheet").Cells(j, 1) 
     Rows(i).Copy Sheets("newSheet").Cells(j + 1, 1) 
    ElseIf InStr(Cells(i, 2), "Keep") > 0 Then 
     Rows(i).Copy Sheets("newSheet").Cells(j, 1) 
    End If 
    j = Sheets("newSheet").Cells(Rows.Count, 1).End(xlUp).Row + 1 
Next i 
End Sub 

空行を挿入すると、あなたはそのロジックで作業する必要があります必要がある場合。

enter image description here

このマクロは、出力を使用して新しいシートを作成します。

+0

美しく働いてくれて、ありがとう。 – Vooded

+0

@Vooded素晴らしい答えを正しいものとしてマークして解決してください。それでは、ありがとうございます。 –

+0

ありがとうございました。 – Vooded

関連する問題