Что-то вроде этого, вероятно, сработает:
Sub FixData()
Dim X As Long, Y As Long, Cell As Range, FindChars As Variant, ReplaceChars As Variant, StartRemove As Variant, EndRemove As Variant
FindChars = Array(", ,", ", (", ", [", ", -") 'must have at least 2 elements, if you only have one then just put something it will never have like "zzzzzzzzzz"
ReplaceChars = Array(",", " (", " [", " -") 'must have at least 2 elements, if you only have one then just put something it will never have like "zzzzzzzzzz"
StartRemove = Array("something1", "somthingelse1") 'must have at least 2 elements, if you only have one then just put something it will never have like "zzzzzzzzzz"
EndRemove = Array("something2", "somthingelse2") 'must have at least 2 elements, if you only have one then just put something it will never have like "zzzzzzzzzz"
For Each Cell In Selection
For Y = LBound(FindChars) To UBound(FindChars)
If InStr(1, Cell.Text, FindChars(Y)) > 0 Then Cell.Characters(InStr(1, Cell.Text, FindChars(Y)), Len(FindChars(Y))).Delete
Next
For Y = LBound(StartRemove) To UBound(StartRemove)
If Left(Cell.Text, Len(StartRemove(Y))) = StartRemove Then Cell.Characters(1, Len(StartRemove(Y))).Delete
Next
For Y = LBound(EndRemove) To UBound(EndRemove)
If Right(Cell.Text, Len(EndRemove(Y))) = EndRemove Then Cell.Characters(Len(Cell) - Len(EndRemove(Y)) + 1, Len(EndRemove(Y))).Delete
Next
Next
End Sub
Редактировать на основе разговоров с тех пор и обновлений, чтобы отразить эти разговоры.
Этот код имеет 4 массива, он разрывает поиск и замену массивы первыми, чтобы найти и заменить любой экземпляр. Затем он проходит через начальный массив, чтобы найти только элементы в начале, а затем, наконец, он зацикливает конечный массив, чтобы найти что-нибудь в конце строки.
Использование cell.characters().delete
удалит эти символы без изменения отдельного символа форматирование вокруг него.