Это не так просто, как может показаться, поскольку Excel
имеет склонность преобразовывать три точки в многоточие, что делает его неузнаваемым одиночным символом по сравнению с точкой (или тремя). Кроме того, вам не нужно использовать l oop символов 1 на 1, вместо этого вы можете использовать Like
, чтобы проверить, заканчивается ли ячейка тремя точками или, скорее, многоточием. Рядом с этим мы можем обрезать лишние пробелы в Range
в одном go, используя Application.Trim()
, как показано здесь .
Итак, давайте посмотрим на пример данных, например:
Затем, если мы выберем эти Range
и go над его ячейками, используя, например:
Sub Test()
Dim cl As Range
For Each cl In Selection
If cl.Value Like "*..." Then
cl.Value = Left(cl.Value, Len(cl.Value) - 3)
ElseIf cl.Value Like "*" & ChrW(8230) Then
cl.Value = Left(cl.Value, Len(cl.Value) - 1)
End If
Next
Selection.Value = Application.Trim(Selection)
End Sub
тогда результаты будут:
И ради забавных альтернатив, подход RegEx
:
Sub Test2()
Dim cl As Range
With CreateObject("vbscript.regexp")
.Global = True
.Pattern = "…$|\.{3}$"
For Each cl In Selection
cl.Value = .Replace(cl.Value, "")
Next
End With
Selection.Value = Application.Trim(Selection)
End Sub