如何使用 VBA 删除 Excel 工作表中除表格之外的所有内容?

Austin_Longhorn

由于将 PDF 转换为 Excel,我有许多杂乱数据的工作表。

我选择工作表的一部分并将其定义为名为“GP_Data”的表。

我正在尝试删除工作表中除我定义的表之外的所有其他内容。

有没有办法做到这一点?

我已经根据我在此处看到的另一个答案尝试了以下内容...但似乎类型不匹配,因为 GP_Data 是我的表名,我认为 VBA 似乎不喜欢将表定义为范围。

Dim xRg As Range
Dim xCell As Range
Dim xAddress As String
        
xAddress = Application.ActiveWindow.RangeSelection.Address
    
Set xRg = GP_Data
    
For Each xCell In ActiveSheet.UsedRange
If Intersect(xCell, xRg) Is Nothing Then
xCell.Clear
End If
Next

——

谢谢!

VBasic2008

清除表格外的单元格

Option Explicit

Sub deleteExceptTable()
    
    Dim urg As Range: Set urg = ActiveSheet.UsedRange
    Dim trg As Range: Set trg = ActiveSheet.ListObjects("GP_Data").Range

    Dim drg As Range
    Dim lSize As Long
    Dim cCount As Long
    
    ' Left
    lSize = trg.Column - urg.Column
    If lSize > 0 Then
        Set drg = urg.Columns(1).Resize(, lSize)
    End If
    ' Right
    cCount = urg.Column + urg.Columns.Count - trg.Column - trg.Columns.Count
    If cCount > 0 Then
        Set drg = CombinedRange(drg, _
            urg.Columns(lSize + trg.Columns.Count + 1).Resize(, cCount))
    End If
    
    Dim rCount As Long
    
    ' Top
    rCount = trg.Row - urg.Row
    If rCount > 0 Then
        Set drg = CombinedRange(drg, _
            Cells(urg.Row, trg.Column).Resize(rCount, trg.Columns.Count))
    End If
    ' Bottom
    rCount = urg.Row + urg.Rows.Count - trg.Row - trg.Rows.Count
    If rCount > 0 Then
        Set drg = CombinedRange(drg, Cells(trg.Row + trg.Rows.Count, _
            trg.Column).Resize(rCount, trg.Columns.Count))
    End If
    
    If Not drg Is Nothing Then
        drg.Clear
    End If

End Sub

Function CombinedRange( _
    ByVal BuiltRange As Range, _
    ByVal AddRange As Range) _
As Range
    If BuiltRange Is Nothing Then
        Set CombinedRange = AddRange
    Else
        Set CombinedRange = Union(BuiltRange, AddRange)
    End If
End Function

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用VBA在Excel中删除工作表

使用Excel VBA删除所有字母

如何删除Excel中打印区域之外的所有内容?

如何删除 VBA 中除某些工作表之外的工作表

使用VBA删除Excel表行

如何使用VBA根据条件删除Excel ListObject中的行?

如何使用VBA从整个Excel列中删除空格?

如何使用VBA在Excel中搜索单词,然后删除整行?

如何使用 VBA 代码从整个 excel 中删除多余的空格?

使用VBA在Excel中删除图表

使用Google表格或Excel公式从字符串中删除数字和字母之外的所有内容

如何从共享工作簿、Excel VBA 中删除所有其他用户?

如何从列表中删除除单词之外的所有内容?

使用一行 Excel VBA 删除工作表

使用vba删除其他excel工作簿中excel工作表上的空白行

如何从所有Excel工作表中删除任何行?

使用Vba从Excel工作簿中删除查询

c# - 如何从excel中删除除标题之外的所有行#

使用Excel VBA命令删除除特定ShapeType以外的所有形状

Excel使用代码名删除除活动工作表和指定工作表以外的所有工作表

如何使用VBA从excel中的列中删除所有重复项,而只保留没有重复项的行?

使用VBA从Excel工作表中的单元格中删除/修剪空格

如何删除Excel VBA中的特定列(不完全)

在Excel VBA中,如何删除灰色分页符?

如何在VBA Excel中检查和删除空间

如何从单独的Excel工作表VBA中删除最后一行

在Excel中使用VBA,如何清除特定列之外的所有内容?

在Excel中查找多个单词并使用VBA删除行

使用VBA从Excel文件目录中删除已知密码