VBA,仅在范围=字符串的列中清除内容



我想清除指定列中的内容,其中col A = "stack".我不想使用range("A2:A1000"),因为这可能会改变。

在这里遇到了一些麻烦,不确定我是否需要遍历每一行,谁能帮我开始这个。

Sub Clear()
Dim stack As Range
stack= Sheets("database").Range("A2").Offset("stack", 0).endxlup.Select
Range("CJ:CW").stack.ClearContents
End Sub

我将对您描述的内容而不是代码进行投注。

我想清除指定列中的内容,其中 col A = "堆叠"。我不想使用范围("A2:A1000"(,因为这可能会改变。

我将把它看作是动态确定 A 列中的结束行,然后从A2循环到它。如果给定单元格的 A 列值为"堆栈",则清除同一行中CJ:CW的内容。

Option Explicit
Public Sub ClearCells()
Dim mainRange As Range, rng As Range
Application.ScreenUpdating = False
With ThisWorkbook.Worksheets("database")
Set mainRange = .Range("A2:A" & .Cells(.Rows.Count, "A").End(xlUp).Row)
For Each rng In mainRange.SpecialCells(xlCellTypeConstants)
If rng.Value = "stack" Then
rng.Offset(, 87).Resize(1, 14).ClearContents
End If
Next
End With
Application.ScreenUpdating = True
End Sub

阵列版本:

Option Explicit
Public Sub ClearCells()
Dim mainRange As Range, arr(), i As Long, j As Long
Application.ScreenUpdating = False
With ThisWorkbook.Worksheets("database")
Set mainRange = .Range("A2:CW" & .Cells(.Rows.Count, "A").End(xlUp).Row)
arr = mainRange.Value
For i = LBound(arr, 1) To UBound(arr, 1)
If arr(i, 1) = "stack" Then
For j = 1 To 14
arr(i, 87 + j) = vbNullString
Next
End If
Next
mainRange = arr
End With
Application.ScreenUpdating = True
End Sub

相关内容

  • 没有找到相关文章

最新更新