首页 > 解决方案 > 用于删除重复标题/元数据的 VBA 宏

问题描述

我有一个包含重复标题和页码的工作簿,我想通过 vba 宏删除它们。

下面的屏幕截图在我的工作簿中重复出现,我尝试编写一个宏来查找特定文本并删除,但会导致数据错误地移动并且效率极低。标题之间的行并不总是 3,所以我不能有一个宏每 x 行盲目删除 5 行。为清楚起见,我试图删除粗体文本,同时不丢失非粗体数据的完整性。

在此处输入图像描述

是否可以有一个超出特定范围的宏来删除上面描述的重复标题和元数据?

宏尝试使用如何根据单元格值删除行。可以理解地更改每个标题/元数据的文本不是一个合理的解决方案,并且会导致数据偏移。

Sub DeleteRowsWithHyphen()

    Dim rng As Range

    For Each rng In Range("A2:A20") 'Range of values to loop through

        If InStr(1, rng.Value, "Page 1 of 10") > 0 Then 'InStr returns an integer of the position, if above 0 - It contains the string
            rng.Delete
        End If

    Next rng

End Sub

标签: excelvba

解决方案


看起来您可以删除所有列中不是数字的行。如果是这样,那么尝试..

Sub DeleteNonNumberRows()
Dim rng As Range, Cl As Range, DelRng As Range
LRow = Range("A" & Rows.Count).End(xlUp).Row

Set rng = Range("A1", "A" & LRow)

For Each Cl In rng
    If IsNumeric(Cl) = False Or Cl = "" Then
        If DelRng Is Nothing Then
        Set DelRng = Cl
        Else
        Set DelRng = Union(DelRng, Cl)
        End If
    End If
Next

DelRng.EntireRow.Delete

End Sub

请注意,rng 从 A1 开始。根据需要进行更改。


推荐阅读