Vba 宏删除标题(如果标题出现多次)

Vba 宏删除标题(如果标题出现多次),vba,excel,Vba,Excel,我最近开发了一个宏,将大约70张图纸合并到一张图纸中。我现在遇到的问题是,每个工作表中的所有标题现在都在合并工作表中重复,同时还有我不再需要的子标题 是否有一个宏,我可以轻松地删除重复的标题 这是我当前的代码: Sub Copy_Sheets_To_consolidated() Application.ScreenUpdating = False Dim i As Long Dim Sh1 As String Sh1 = "consolidated" Dim ans As String Dim

我最近开发了一个宏,将大约70张图纸合并到一张图纸中。我现在遇到的问题是,每个工作表中的所有标题现在都在合并工作表中重复,同时还有我不再需要的子标题

是否有一个宏,我可以轻松地删除重复的标题

这是我当前的代码:

Sub Copy_Sheets_To_consolidated()
Application.ScreenUpdating = False
Dim i As Long
Dim Sh1 As String
Sh1 = "consolidated"
Dim ans As String
Dim Lastrow As Long
Dim Lastrowa As Long
Dim Lastrowd As Long
Sheets(Sh1).Activate
Lastrow = 6
Lastrowd = 6
    For i = 1 To Sheets.Count
        If Sheets(i).Name <> Sh1 Then
        ans = Sheets(i).Name
        Lastrowa = Sheets(i).Cells(Rows.Count, "A").End(xlUp).Row
        Sheets(i).Range("A6:N" & Lastrowa).Copy Sheets(Sh1).Range("A" & Lastrow)
        Lastrowd = Sheets(Sh1).Cells(Rows.Count, "A").End(xlUp).Row
        Sheets(Sh1).Range("D" & Lastrow & ":D" & Lastrowd).Value = ans
        Lastrow = Sheets(Sh1).Cells(Rows.Count, "A").End(xlUp).Row + 1
        End If
    Next
Application.ScreenUpdating = True
End Sub
Sub Copy_Sheets_To_consolidated()
Application.ScreenUpdating=False
我想我会坚持多久
Dim Sh1作为字符串
Sh1=“合并”
像线一样变暗
最后一排一样长
长得一样
我最后一次划船一样长
工作表(Sh1)。激活
最后一行=6
Lastrowd=6
对于i=1到1张。计数
如果是第(i)页,则命名为Sh1
ans=工作表(i).名称
Lastrowa=工作表(i).单元格(Rows.Count,“A”).结束(xlUp).行
图纸(i).范围(“A6:N”和Lastrowa).复制图纸(Sh1).范围(“A”和Lastrow)
Lastrowd=Sheets(Sh1).单元格(Rows.Count,“A”).结束(xlUp).行
图纸(Sh1)。范围(“D”&Lastrow&“:D”&Lastrowd)。值=ans
Lastrow=工作表(Sh1)。单元格(Rows.Count,“A”)。结束(xlUp)。行+1
如果结束
下一个
Application.ScreenUpdating=True
端接头

是否有一种方法可以将此代码编辑为仅在两个变量(例如,单词Assignment和Client)之间进行复制?

此方法检查单个列中的标题,然后基于此删除行。使用一列,其中标题不会在数据体中重复

Sub RemoveHeaders()

    Dim wrkSht As Worksheet
    Dim rLastCell As Range
    Dim rFound As Range
    Dim rDelete As Range
    Dim sFirstAddress As String

    Set wrkSht = ThisWorkbook.Worksheets("Sheet1") 'Change sheet name to suit.
    With wrkSht
        Set rLastCell = .Cells(.Rows.Count, 1).End(xlUp)
        With .Range("A1", rLastCell) 'Change column reference to suit.
            Set rFound = .Find(What:="My Header", LookIn:=xlValues) 'Change header text to suit.
            If Not rFound Is Nothing Then
                sFirstAddress = rFound.Address
                Do
                    If rDelete Is Nothing Then
                        Set rDelete = rFound.EntireRow
                    Else
                        Set rDelete = Union(rDelete, rFound.EntireRow)
                    End If
                    Set rFound = .FindNext(rFound)
                Loop While rFound.Address <> sFirstAddress
            End If
        End With
        rDelete.Delete Shift:=xlUp
    End With

End Sub
Sub-RemoveHeaders()
Dim wrkSht As工作表
Dim rLastCell As范围
暗光范围
Dim R删除为范围
Dim sFirstAddress作为字符串
设置wrkSht=ThisWorkbook.Worksheets(“Sheet1”)'更改工作表名称以适应。
带wrkSht
设置rLastCell=.Cells(.Rows.Count,1).End(xlUp)
使用.Range(“A1”,rLastCell)更改列引用以适应。
设置rFound=.Find(What:=“我的标题”,LookIn:=xlValues)”更改标题文本以适合。
如果没有找到,那就什么都不是了
sFirstAddress=rFound.Address
做
如果rDelete什么都不是,那么
设置rDelete=rFound.EntireRow
其他的
Set rDelete=Union(rDelete,rFound.EntireRow)
如果结束
设置rFound=.FindNext(rFound)
查找时循环。地址sFirstAddress
如果结束
以
rDelete.Delete Shift:=xlUp
以
端接头

回答你的问题:不,没有,你必须写一个。因为Stack Overflow不是免费的代码编写服务,所以请先自己尝试,然后带着您尝试过的代码返回,告诉我们您遇到了哪些错误,在哪里,或者在哪里卡住了。顺便说一句,只复制没有标题的数据可能比以后删除标题更容易。请添加您的代码以便我们可以帮助您。如果您的标题位于第6行,则我已添加了我的代码。然后将
范围(“A6:N”&Lastrowa)
更改为
范围(“A7:N”&Lastrowa)
仅复制数据并省略标题。问题是标题在整个工作表中重复出现。因此,它们可能出现在A6中,但在A12、A20等中再次出现。。(尽管行号可能会根据标题之间的数据量每次更改)