顶部您可能希望在一个声明中最大限度地提高性能和删除行只
,所以你可以去喜欢如下
Sub changeIt()
Dim unionRng As Range, rng As Range
Set rng = Range("A1:A19")
Set unionRng = Range("B1") '"dummy" range, to prevent Union method from failing the first time it's called
For Each cell In rng
If StrComp(cell, UCase(cell), vbBinaryCompare) = 0 Then Set unionRng = Union(unionRng, cell)
Next cell
If unionRng.Count > 1 Then Intersect(unionRng, rng).EntireRow.Delete ' Intersect method removes the "dummy" range from the one whose rows are to be deleted
End Sub
I en也关闭了一个“公式”方法,它不会遍历单元格并使用“助手”列(要扫描范围右侧的那一列),因此它必须是“空闲”的。
Option Explicit
Sub changeIt2()
Dim rng As Range
Set rng = Range("A1:A19")
With rng.Offset(, 1)
.FormulaR1C1 = "=IF(exact(Upper(RC[-1]),RC[-1]),"""",1)"
.value = .value
.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
.Clear
End With
End Sub