2012-06-11 5 views
1

Я знаю, что функция TRIM как функция рабочего листа и как функция VBA возвращает разные результаты:Эквивалент VBA TRIM функции Excel с помощью функции рабочего листа

  • функция рабочего листа удаляет все пробелы из строки текста для отдельных пространств между исключением слова
  • , в то время как функция VBA удаляет только ведущие и конечные пробелы.

Существует способ эмулировать поведение VBA с помощью функций листа без БЕСПЛАТНОЙ функции VBA?

ответ

5

Использование только функции рабочего листа, вы можете попробовать это для текстовой строки в А1:

=REPLACE(LEFT(A1,MATCH(2,1/(MID(A1,MMULT(ROW(INDIRECT("1:"&LEN(A1))),1),1)<>" "))),1,FIND(LEFT(TRIM(A1)),A1)-1,"") 

Поиск позиции последнего символа, который не является пространством, не является строкой из-за отсутствия строковых обратных рабочих листов.

Если вы не хотите использовать VBA это намного проще в использовании данных | Текст по столбцам с параметрами:

  1. Фиксированная ширина
  2. Нет прерывистых линий
  3. Назначение: B1

, который также удаляет ведущие и конечные пробелы.

+0

+ 1 Просто красиво :) –

+0

Большое спасибо! regs, stex – stexcec

+0

+1 приятный! Сначала я думал, что MMULT был лишним, но при ближайшем рассмотрении он устраняет необходимость ввода массива. Это было ваше намерение? –

1

функция рабочего листа удаляет все пробелы из текстовой строки для одиночных пробелов между словами

Нет, это не совсем верно :) Worksheet TRIM функция не удаляет неразрывный пробел (&nbsp;), за исключением. Для того, чтобы удалить неразрывный пробел, у вас есть другая функция называется CLEAN()

Если вы хотите использовать Рабочий лист Функция Trim в VBA, то вы можете использовать его как это

Application.WorksheetFunction.Trim(Range("A1").Value) 

В Excel Worksheet вы можете использовать =TRIM()

+0

Спасибо, но мне нужна функция рабочего листа, которая удаляет только начальное и конечное пространства. Есть идеи? – stexcec

+0

Думаю, я знаю, о чем вы говорите. Вы случайно ссылаетесь на случай, когда ячейка имеет пространство, созданное с помощью Alt + Enter? –

+0

Нет Сиддхарт, у меня есть строка вроде этого: «строка с одним или несколькими пробелами». Результат для TRIM (string) в ячейке excel будет «строка с одним или несколькими пробелами». функция VBA TRIM вернет строку с одним или несколькими пробелами ... – stexcec

0

Вы можете написать функцию в VBA, которую вы можете найти на своем листе.

Например:

Public Function MyTrim(text As String) As String  
    MyTrim = Trim(text)  
End Function 

Затем на листе, предполагая, что текст, который вы хотите обрезать в ячейке A1:

=MyTrim(A1) 
+0

Спасибо, Пит, но я искал решение без использования пользовательской функции VBA. Regs – stexcec

+0

Почему это было downvoted? «Без пользовательской функции VBA» был отредактирован на вопрос после того, как я опубликовал этот ответ ... – PeteGO

+0

@PeteOakey - я удалил свой нисходящий поток в свете этого разъяснения – brettdj

Смежные вопросы