如何清除所有数据除X,Y和Z列?

我想清除ALL(不删除)工作表中的内容除了列X,Y和Z(例如)? 这些列存储在一个variables中。

是的,你清除两个范围:

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

这个function是这样的:

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 

真正有趣的问题 – 和@ SQLPolice的答案简洁地完成工作。 (顺便说一下+1)

这是另一个选项,它可以处理除Range("X:Z")以外的列中开始/停止的Rangevariables:

 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