Excel VBA如何替换包含大于零的数字的每个单元格
如何替换范围内大于零的数字 我可以替换给定范围内的一个特定单词或数字:Excel VBA如何替换包含大于零的数字的每个单元格,excel,vba,Excel,Vba,如何替换范围内大于零的数字 我可以替换给定范围内的一个特定单词或数字: Sheet1.Columns("N").Replace What:="1", Replacement:="Good", LookAt:=xlWhole, SearchOrder:=xlByRows, MatchCase:=False 现在,如果我想替换所有包含大于零的数字,比如1-1000000,如果我使用循环语句,这将使宏运行缓慢,该怎么办 我希望会有这样的代码: Sheet1.Columns("N").Repla
Sheet1.Columns("N").Replace What:="1", Replacement:="Good", LookAt:=xlWhole,
SearchOrder:=xlByRows, MatchCase:=False
现在,如果我想替换所有包含大于零的数字,比如1-1000000
,如果我使用循环语句,这将使宏运行缓慢,该怎么办
我希望会有这样的代码:
Sheet1.Columns("N").Replace What:=">0", Replacement:="Good", LookAt:=xlWhole,
SearchOrder:=xlByRows, MatchCase:=False`
您可以使用=EVALUATE(),但以下速度不应太慢:
Sub qwerty()
Dim r As Range, rFix As Range, rr As Range
Set r = Intersect(ActiveSheet.UsedRange, Range("N:N"))
Set rFix = Nothing
For Each rr In r
If IsNumeric(rr.Value) Then
If rr.Value > 0 Then
If rFix Is Nothing Then
Set rFix = rr
Else
Set rFix = Union(rr, rFix)
End If
End If
End If
Next
rFix.Value = "Good"
End Sub
您可以使用过滤器:
Sub tgr()
On Error Resume Next 'Prevents error if there are no cells with value >0
With Intersect(Sheet1.UsedRange, Sheet1.Columns("N"))
.AutoFilter 1, ">0"
.Offset(1).Resize(.Rows.Count - 1).SpecialCells(xlCellTypeVisible).Value = "Good"
.AutoFilter
End With
On Error GoTo 0 'Remove the On Error Resume Next condition
End Sub
尝试:
End Sub对不起,Gary,这可能不是我要找的。如果这是一个像这样的长代码,我可能会做另一列,并根据主列在上面添加一个公式,因为它会运行得更快。(如果我的代码太慢,请使用tigeravatar的宏+1来使用
.Autofilter
:)对不起,马克,我可以做循环,但我不想尽可能多地使用循环,因为它们每行都要检查,我们每天将有数千条记录。难道没有像Sheet1.Columns(“N”).Replace这样的选项吗?它是一个行线并替换列中所有限定的单元格值?我希望会有。
Sub PositiveIsGood()
For x = 1 To ActiveSheet.UsedRange.Rows.Count
If Cells(x, "N") > 0 Then
Cells(x, "N") = "Good"
End If
Next x