有没有一种快速的方法可以从工作表中清除大量数据



我需要清除同一工作簿中两张工作表中的所有数据(第1行除外(。目前,一张图纸有21000行,另一张有10000行,都有26列。

当我使用以下代码时,执行大约需要2.5分钟。

必须有一种更快的方法来做到这一点,因为我可以在不到8秒内手动完成。

Sub DeleteExceptFirst()
TurnOffFunctionality           'Turn off at the start
    Dim StartTime As Double
        StartTime = Timer         'Get start time
        
    Dim shCount As Integer
    Dim wks As Worksheet
    
    For shCount = 1 To 2
        If shCount = 1 Then
            Set wks = cnCustomers
        Else
            Set wks = cnVendors
        End If
    
    wks.Rows("2:" & Rows.Count).ClearContents
    Next shCount
TurnOnFunctionality            'Turn back on at the end
Call EndTimer("DeleteExceptFirst", StartTime)
End Sub

我为您将AcsErno的行合并到一个简单的循环中。

Sub deleteallbutfirstrow()
Dim ws As Worksheet
Dim starting_ws As Worksheet
Set starting_ws = ActiveSheet 'remember which worksheet is active in the beginning
For Each ws In ActiveWorkbook.Worksheets
    ws.UsedRange.Offset(1).ClearContents
Next
starting_ws.Activate 'activate the worksheet that was originally active
End Sub

您删除的是整个范围大小,包括所有列,但仅限于内容。由于Z列右侧的任何内容都可能包含一大堆空格、额外的格式等,VBA在分离单元格信息方面有很多工作要做。

提供更快代码执行的一个简单方法可能是标记整个columns块手动从列AA到XFD,并完全删除它们。在第二步中,您可以将纯内容删除限制为所需的26列,例如通过

            Dim header: header = wks.Range("A1:Z1")
            wks.Range("A:Z").ClearContents
            wks.Range("A1:Z1") = header

或者可替换地执行完全清除-不限于仅内容-加上整个列A:Z的最终(编号/日期(重新格式化。

当然,@JohnSUN在评论中提到的损坏工作簿可能会导致大多数问题,所以请听从他的建议,然后:-(

最新更新