Попробуйте что-то вроде этого: Вставьте модуль в VBA Editor (ALT + F11) -> Вставить новый модуль.
Когда вы пропустите этот код, вы можете вызывать его из любой ячейки с помощью "= NotTruncateWord (A1; 30) "
Есть некоторые настройки, потому что трудно понять, что такое Слово (что-то после пробела?), Я спрашиваю, потому что, если кто-то напишет строку из 35 символов без пробела, ябудет считать слово и удалять все?
Открытая функция NotTruncateWord (Value, Limit)
LastSpaceBeforeLimit = 0
FirstSpaceAfterLimit = 9999
Phrase_Lenght = Len(Value)
If Phrase_Lenght > Limit Then
For i = 1 To Phrase_Lenght
check = Mid(Value, i, 1)
If Asc(check) = 32 Then
If i < Limit Then
LastSpaceBeforeLimit = i
ElseIf i < FirstSpaceAfterLimit Then
FirstSpaceAfterLimit = i
End If
End If
Next
If LastSpaceBeforeLimit > 0 Then
NotTruncateWord = Left(Value, LastSpaceBeforeLimit)
Else
NotTruncateWord = Left(Value, Limit)
End If
Else
'no need to truncate
NotTruncateWord = Value
End If
End Function