Aşağıdaki komut dosyası, daha küçük veri kümeleriyle (30 bin satırdan az) çalışmaktadır, ancak aralık daha büyük olduğunda, seçili aralıktaki her hücre için "# VALUE" hatasıyla sonuçlanır. Aşağıda gösterilen büyük veri için konuyu üstesinden olarakVBA ve Excel: TRIM komut dosyasım neden büyük veri kümelerinde # VALUE ile sonuçlanıyor?
Dim FirstCell As Range, LastCell As Range, MyRange As Range
Set LastCell = Cells(Cells.Find(What:="*", SearchOrder:=xlRows, _
SearchDirection:=xlPrevious, LookIn:=xlValues).Row, _
Cells.Find(What:="*", SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious, LookIn:=xlValues).Column)
Set FirstCell = Cells(Cells.Find(What:="*", After:=LastCell, SearchOrder:=xlRows, _
SearchDirection:=xlNext, LookIn:=xlValues).Row, _
Cells.Find(What:="*", After:=LastCell, SearchOrder:=xlByColumns, _
SearchDirection:=xlNext, LookIn:=xlValues).Column)
Set MyRange = Range(FirstCell, LastCell)
MyRange.Select
If MyRange Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
With Selection
.Value = Evaluate("if(row(" & .Address & "),clean(trim(" & .Address & ")))")
End With
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
MsgBox "Finished trimming " & vbCrLf & "excess spaces", 64
Bu kodla kaç tane hücre değiştiriyorsunuz? Sadece 1,7 milyon hücre üzerinde test ettim ve uygulama belgesine – TMH8885
8,106,860 hücre hatası vermedim. Bu 161,363 satır. –
Yaklaşık 70 bin satıra kadar çalışıyor gibi görünüyor. Bundan çok daha fazlası, yalnızca seçilen aralıktaki her hücrenin değerini # VALUE olarak ayarlar. –