删除重复标题

时间:2019-03-25 16:22:31

标签: vba header duplicates

我是vba的新手,我想删除重复的列标题。

示例: A1:年份A2:2002 A3:2005 A4:2012 A5:年份A6:2005 A7:年份 B1:部门B2:销售B3:营销B4:人力资源B5:部门B6:营销B7:部门 C1:成本C2:111 C3:23784 C4:1234 C5:成本C6:5737 C7:成本

在此示例中,我想保留除重复的Header(此处为Row5和7)以外的所有内容,应将其删除,以便最终看起来像这样:

A1:年份A2:2002 A3:2005 A4:2012 A5:2005 B1:部门B2:销售B3:营销B4:人力资源B5:营销 C1:成本C2:111 C3:23784 C4:1234 C5:5737

我不知道重复的标题将出现在哪一行,我也不知道该行何时结束。我尝试使用find和lastrow


Option Explicit

 Sub rh()
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim Dup As Integer
    Dim Lastrow As Integer

On Error Resume Next

    Set wb = ThisWorkbook
    Set ws = wb.Sheets("TESTSHEET")

Dup = ws.Range("A2:C" & Lastrow).Find("Year", LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False).Columns

ws.Select
Columns(Dup).Select
Selection.Delete

End Sub

这对我不起作用,它没有删除发现重复标题的行

1 个答案:

答案 0 :(得分:1)

Excel方式

只需编写Excel功能删除重复项,就无需编写VBA代码。操作方法如下:

  1. 选择要删除重复值的单元格区域。
  2. 点击数据>删除重复项,然后在下,选中或取消选中要删除重复项的列。

    enter image description here
  3. 例如,在此工作表中,“名称”列包含我要删除的重复项。

enter image description here

从“名称”列中删除重复项后,其外观如下:

enter image description here


VBA方式

如果必须使用VBA来实现此目的,则可以使用RemoveDuplicates函数:

  

带有标题

Sub sbRemoveDuplicatesSpecificWithHeaders()
   Range("A1:D10").RemoveDuplicates Columns:=Array(1), Header:= xlYes 
End Sub

  

没有标题

Sub sbRemoveDuplicatesSpecificWithNoHeaders()
   Range("A1:D10").RemoveDuplicates Columns:=Array(1), Header:= xlNo
End Sub

删除重复的标题

在这种特殊情况下,有多个标头以没有特定模式的形式重复。如果要消除它们,请使用以下代码:

Sub removeDuplicates()
    Dim lrow As Long
    Dim index As Long
    Dim header As String

    header = Range("A1").Value
    lrow = Range("A" & Rows.count).End(xlUp).Row

    For index = 2 To lrow
        If Range("A" & index).Value = header Then Rows(index).Delete
    Next
End Sub

希望这会有所帮助。