我有一个excel工作表,其中包含许多需要修剪的数据。
数据是按ID号组织的,其中多行附加到给定ID。对于每个唯一ID,我需要保留所有行中的某些代码(可在B列中找到)。如果存在这样的行,我还需要使用“守护程序代码”将行保持在行的上方。如果不存在这样的行,那么我需要插入一个空行。*
对于给定的ID,如果不存在“守护者代码”,则应删除与该ID相关联的所有行。应删除所有与“守护者代码”无关或紧跟在“守护者代码”行上方的行。
可能是屏幕截图最好的解释。数据将按照身份证号码进行分类。
*插入一个空白行会很好但是如果它使编码变得困难则不是很必要。
非常感谢!
答案 0 :(得分: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
如果需要插入空行,则可能需要处理该逻辑。
此宏创建一个带有输出的新工作表。