【问题标题】:How to clear all data EXCEPT columns X, Y & Z?如何清除除 X、Y 和 Z 列之外的所有数据?
【发布时间】:2015-07-04 18:28:20
【问题描述】:

我想清除工作表中除 X、Y 和 Z 列之外的所有(而不是删除)内容(例如)?这些列存储在一个变量中。

【问题讨论】:

  • 使用宏记录器并选择所有要清除的列,然后按删除。看代码你会发现和清除内容是一样的。

标签: vba excel multiple-columns rowdeleting


【解决方案1】:

是的,您清除了两个范围:

  • 范围号 1 从第 1 列 ('A') 到 23 ('W')。
  • 范围号 2 从第 27 列 ('AA') 到最后使用的列。

这个函数做到了:

Public Sub CustomClear()
    Dim ws As Worksheet
    Set ws = ActiveSheet

    ws.Range(ws.Columns(1), ws.Columns(23)).Clear
    ws.Range(ws.Columns(27), ws.Columns(ws.UsedRange.End(xlToRight).Column)).Clear
End Sub

【讨论】:

    【解决方案2】:

    非常有趣的问题——@SQLPolice 的回答简洁明了地完成了工作。 (顺便说一下,+1。)

    这是另一个选项,它可以处理在Range("X:Z") 以外的列中启动/停止的Range 变量:

    Option Explicit
    Public Sub ClearRangesBeforeAndAfter()
    
        Dim rngToKeep As Range, rngToClear As Range
        Dim lngColNum As Long
        Dim wks As Worksheet
    
        Set wks = ThisWorkbook.Worksheets(1) '<~ assume we're on Sheet1
    
        With wks
            Set rngToKeep = .Range("W:Z") '<~ this is the example range from OP
            '
            'Or, we could pick any other group of continuous columns, like:
            '
            'Set rngToKeep = .Range("B:D")
            'Set rngToKeep = .Range("H:Z")
            'Set rngToKeep = .Range("A:AZ")
    
            'First, find the farthest-left border of the "keep" range
            'by leveraging the relative nature of rngToKeep.Cells
            lngColNum = rngToKeep.Cells(1, 1).Column
    
            'Now we can clear everything up to that border
            If lngColNum > 1 Then
                Set rngToClear = .Range(.Columns(1), .Columns(lngColNum - 1))
                rngToClear.Clear
            End If
    
            'Then, find the farthest-right border of the "keep" range
            'and clear the remaining cells
            lngColNum = rngToKeep.Offset(0, rngToKeep.Columns.Count).Column
            Set rngToClear = .Range(.Columns(lngColNum), _
                                    .Columns(.Columns.Count))
            rngToClear.Clear
        End With
    
    End Sub
    

    【讨论】:

      猜你喜欢
      • 2020-11-18
      • 2017-06-05
      • 2012-10-07
      • 1970-01-01
      • 2013-06-10
      • 2013-02-26
      • 1970-01-01
      • 2012-05-29
      • 2013-10-04
      相关资源
      最近更新 更多