Excel VBA:创建宏,删除两列中具有相等值单元格的行

时间:2014-06-25 19:16:50

标签: excel vba excel-vba

我通常编码C但是我被迫使用VBA并且我整天都在撕裂我的头发。

场景:我工作的工程师每天都会获得数百份文档,他有一个解压缩的宏,并在Excel工作表中列出文档。 A列是UniqueID,B是Zip文件名,C是文件名。每个Zip文件都有一个求职信,其名称与Zip文件名相同。这封求职信是无用的,需要删除。

我需要一个宏,当行包含coverletter信息时,它会删除整行。例如,如果B4 = C4删除第4行或者如果B5 = C5,则删除第5行等。我尝试的所有内容都返回错误。 我想出了这个:

Sub DeleteDuplicateEntries()
    Dim Cell As Range, Cel As Range, N&
    Application.ScreenUpdating = False
    N = 0
    For Each Cell In Selection
         ' ignore empty cells
        If Cell <> Empty Then
            For Each Cel In Selection
                 'compare non-empty cel values
                 'and clear contents if duplicated value
                If Cel <> Empty And _
                Cel.Value = Cell.Value And _
                Cel.Address <> Cell.Address Then
                    Cel.ClearContents
                    N = N + 1
                End If
            Next Cel
        End If
    Next
    Application.ScreenUpdating = True
   End Sub

问题:它最终会删除每个Zip文件名(除了第一个),但它不会删除该行:(

1 个答案:

答案 0 :(得分:1)

试试这个小宏:

Sub rowKiller()
    Dim N As Long, i As Long
    N = Cells(Rows.Count, "B").End(xlUp).Row
    For i = N To 2 Step -1
        If Cells(i, "B").Value = Cells(i, "C").Value Then
            Cells(i, "B").EntireRow.Delete
        End If
    Next i
End Sub