Если вы хотите сохранить все промежуточные пробелы, проще всего воспользоваться короткой пользовательской функцией.
Function vbaTRIM(S As String) As String
vbaTRIM = Trim(S)
End Function
Если вы не можете использовать VBA, вы можете использовать эту довольно сложную функцию массива:
=MID(A1,MATCH(TRUE,(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)<>CHAR(32)),0),
LOOKUP(2,1/(MID(A1&" ",ROW(INDIRECT("1:"&LEN(A1)+1)),1)<>CHAR(32)),
ROW(INDIRECT("1:"&LEN(A1)+1)))-MATCH(TRUE,(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)<>CHAR(32)),0)+1)
Чтобы ввести / подтвердить формулу массива , удерживайте нажатой клавишу ctrl + shift при нажатии , введите .Если вы сделаете это правильно, Excel поместит фигурные скобки {...}
вокруг формулы, отображаемой в строке формул.
Эта функция состоит из двух основных частей:
Найти первый не-пробел
=MATCH(TRUE,(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)<>CHAR(32)),0)
Найти последний не пробел
=LOOKUP(2,1/(MID(A1&" ",ROW(INDIRECT("1:"&LEN(A1)+1)),1)<>CHAR(32)),ROW(INDIRECT("1:"&LEN(A1)+1)))
Итак, чтобы вернуть только пробелы, удаленные из начала и конца:
=mid(a1,firstNonSpace,lastNonSpace-firstNonSpace+1)
Если вы введете эти сегменты формулы в какую-то ячейку и воспользуетесь инструментом оценки формулы, вы сможете выяснить, как они работают.
РЕДАКТИРОВАТЬ
Если у вас более новая версия Excel с функцией FILTERXML
, вы можете попробовать:
=FILTERXML("<s>" & A1 & "</s>", "//s")