我是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
这对我不起作用,它没有删除发现重复标题的行
答案 0 :(得分:1)
只需编写Excel功能删除重复项,就无需编写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
希望这会有所帮助。