Столбец TRIM
Тест
Я протестировал оба решения на столбцах с миллионными строковыми значениями, используя MicroTimer. В версии с массивом производительность была немного лучше (1-2%). Обрезка, используемая таким образом, не вызовет ошибку, если есть значение ошибки, число или формула. Любые формулы будут потеряны, только значения будут записаны обратно на лист. Время, необходимое для усечения миллиона строковых значений, составляло на моем компьютере около 3,5 секунд.
Использование: вызов из другого вспомогательного примера
trimColumnA Sheet1, "A", 2
trimColumnA Sheet2, 2
trimColumnA Thisworkbook.Worksheets("Sheet1"), "H"
Код
Sub trimColumnA(Sheet As Worksheet, trimColumn As Variant, _
Optional FirstRow As Long = 1)
Dim rng As Range
Dim vnt As Variant
With Sheet
' Define last cell range containing a value.
Set rng = .Columns(trimColumn).Find(What:="*", LookIn:=xlValues, _
Searchdirection:=xlPrevious)
' Define Trim Range.
Set rng = .Range(.Cells(FirstRow, trimColumn), rng)
vnt = rng
rng.Value = Application.Trim(vnt)
End With
End Sub
Sub trimColumnR(Sheet As Worksheet, trimColumn As Variant, _
Optional FirstRow As Long = 1)
Dim rng As Range
With Sheet
' Define last cell range containing a value.
Set rng = .Columns(trimColumn).Find(What:="*", LookIn:=xlValues, _
Searchdirection:=xlPrevious)
' Define Trim Range.
Set rng = .Range(.Cells(FirstRow, trimColumn), rng)
End With
rng.Value = Application.Trim(rng.Value)
End Sub