根据ID和单元格值删除Excel中的行

时间:2017-06-13 05:12:46

标签: excel

我有一个excel工作表,其中包含许多需要修剪的数据。

数据是按ID号组织的,其中多行附加到给定ID。对于每个唯一ID,我需要保留所有行中的某些代码(可在B列中找到)。如果存在这样的行,我还需要使用“守护程序代码”将行保持在行的上方。如果不存在这样的行,那么我需要插入一个空行。*

对于给定的ID,如果不存在“守护者代码”,则应删除与该ID相关联的所有行。应删除所有与“守护者代码”无关或紧跟在“守护者代码”行上方的行。

可能是屏幕截图最好的解释。数据将按照身份证号码进行分类。

before

after

*插入一个空白行会很好但是如果它使编码变得困难则不是很必要。

非常感谢!

1 个答案:

答案 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

如果需要插入空行,则可能需要处理该逻辑。

enter image description here

此宏创建一个带有输出的新工作表。