我正在尝试使选择的单元格列都为正数。我创建了这个宏,它正在工作....只需要一段时间。它现在已经运行了大约5分钟。请注意,我确实有200k行的数据供它搜索...其他人之前有这个问题或想法下次更快吗?
Sub Positive()
Dim Cel As Range
For Each Cel In Selection
If IsNumeric(Cel.Value) Then
Cel.Value = Abs(Cel.Value)
End If
Next Cel
End Sub
答案 0 :(得分:4)
尝试一下,让我知道性能如何:
Option Explicit
Sub Positive()
Dim varArray As Variant
Dim lngRow As Long, lngColumn As Long
varArray = Selection.Value2
For lngRow = LBound(varArray, 1) To UBound(varArray, 1)
For lngColumn = LBound(varArray, 2) To UBound(varArray, 2)
If IsNumeric(varArray(lngRow, lngColumn)) Then
varArray(lngRow, lngColumn) = Abs(varArray(lngRow, lngColumn))
End If
Next lngColumn
Next lngRow
Selection.Value2 = varArray
End Sub
答案 1 :(得分:1)
我认为您可以将范围保存到数组中,然后处理数组并将其写回范围,未经测试但应该关闭。
Dim myArr() As Variant
myArr = Range("A1:A10")
Dim iCount As Long
For iCount = LBound(myArr) To UBound(myArr)
myArr(iCount) = abs(myArr(iCount))
Next iCount
Range("A1:A10") = myArr