Fruitsekta.ru

Мир ПК
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Vba excel убрать пробелы из строки

Delete blanks from start and end of a string in vba

I’ve written this function to delete blanks from the start and the end of a string, any ideas why it isn’t working?

Создан 29 сен. 12 2012-09-29 13:08:42 Chris

The [cell view addin](http://www.cpearson.com/excel/CellView.htm) from Pearson’site will help identify the problematic blank. I wouldn’t be surprised if it is the ‘CHAR(160)’ non-breaking-space character. – brettdj 30 сен. 12 2012-09-30 04:26:35

3 ответа

How about this. Note the use of Worksheetfunction.Trim which removes multiple whitespaces which Application.Trim does not.

Создан 29 сен. 12 2012-09-29 14:24:25 user3357963

Alexandre/slaver113 are absolutely correct that it doesn’t make any sense to wrap a built-in function inside a UDF. The reason why I had done the above is to point out how to make your UDF work. In real life scenario, I would never use the UDF in such a way. 🙂

Создан 29 сен. 12 2012-09-29 13:24:17 Siddharth Rout

I think it might not be working because its not a blank character in front, maybe a tab or something. Is the a line of code that will delete anything but text characters? – Chris 29 сен. 12 2012-09-29 13:47:36

Are those non printable characters or the Square looking characters? ‘Is the a line of code that will delete anything but text characters? ‘ Do you want to delete Numeric values also? – Siddharth Rout 29 сен. 12 2012-09-29 13:53:18

Why would you do such a thing ? Is there any advantage to wrapping a built-in function inside a UDF, passing the argument straight to the built-in function without any processing done at all before-hand ? This seems like completely useless to me. – ApplePie 29 сен. 12 2012-09-29 16:07:31

I see that you have assumed that It will ‘only’ be used as a UDF? – Siddharth Rout 29 сен. 12 2012-09-29 16:32:12

does not make sense to wrap a build in function. – slaver113 17 дек. 13 2013-12-17 17:38:44

@slaver113: Is that the reason why you downvoted me? – Siddharth Rout 17 дек. 13 2013-12-17 18:05:41

@Siddharth Rout: Yes, because people, who have the same problem might copy and use your code as it is. It is overhead and bad readable style if you do that on every action. What was your intention behind? – slaver113 18 дек. 13 2013-12-18 08:45:06

@slaver113: Thanks for being honest. A rare trait now a days I must say 🙂 I was answering keeping OP’s format in mind. Point taken. Amending my post. – Siddharth Rout 18 дек. 13 2013-12-18 12:58:02

I tested your function and it works fine on my machine.

You can use the built in Trim() function that does this for you instead of creating a UDF that does the same thing.

Создан 29 сен. 12 2012-09-29 13:24:24 danielpiestrak

I think it might not be working because its not a blank character in front, maybe a tab or something. Is the a line of code that will delete anything but text characters? – Chris 29 сен. 12 2012-09-29 13:46:24

Delete blanks from start and end of a string in vba

I’ve written this function to delete blanks from the start and the end of a string, any ideas why it isn’t working?

Создан 29 сен. 12 2012-09-29 13:08:42 Chris

The [cell view addin](http://www.cpearson.com/excel/CellView.htm) from Pearson’site will help identify the problematic blank. I wouldn’t be surprised if it is the ‘CHAR(160)’ non-breaking-space character. – brettdj 30 сен. 12 2012-09-30 04:26:35

3 ответа

How about this. Note the use of Worksheetfunction.Trim which removes multiple whitespaces which Application.Trim does not.

Создан 29 сен. 12 2012-09-29 14:24:25 user3357963

Читать еще:  Отобразить листы в excel 2020

Alexandre/slaver113 are absolutely correct that it doesn’t make any sense to wrap a built-in function inside a UDF. The reason why I had done the above is to point out how to make your UDF work. In real life scenario, I would never use the UDF in such a way. 🙂

Создан 29 сен. 12 2012-09-29 13:24:17 Siddharth Rout

I think it might not be working because its not a blank character in front, maybe a tab or something. Is the a line of code that will delete anything but text characters? – Chris 29 сен. 12 2012-09-29 13:47:36

Are those non printable characters or the Square looking characters? ‘Is the a line of code that will delete anything but text characters? ‘ Do you want to delete Numeric values also? – Siddharth Rout 29 сен. 12 2012-09-29 13:53:18

Why would you do such a thing ? Is there any advantage to wrapping a built-in function inside a UDF, passing the argument straight to the built-in function without any processing done at all before-hand ? This seems like completely useless to me. – ApplePie 29 сен. 12 2012-09-29 16:07:31

I see that you have assumed that It will ‘only’ be used as a UDF? – Siddharth Rout 29 сен. 12 2012-09-29 16:32:12

does not make sense to wrap a build in function. – slaver113 17 дек. 13 2013-12-17 17:38:44

@slaver113: Is that the reason why you downvoted me? – Siddharth Rout 17 дек. 13 2013-12-17 18:05:41

@Siddharth Rout: Yes, because people, who have the same problem might copy and use your code as it is. It is overhead and bad readable style if you do that on every action. What was your intention behind? – slaver113 18 дек. 13 2013-12-18 08:45:06

@slaver113: Thanks for being honest. A rare trait now a days I must say 🙂 I was answering keeping OP’s format in mind. Point taken. Amending my post. – Siddharth Rout 18 дек. 13 2013-12-18 12:58:02

I tested your function and it works fine on my machine.

You can use the built in Trim() function that does this for you instead of creating a UDF that does the same thing.

Создан 29 сен. 12 2012-09-29 13:24:24 danielpiestrak

I think it might not be working because its not a blank character in front, maybe a tab or something. Is the a line of code that will delete anything but text characters? – Chris 29 сен. 12 2012-09-29 13:46:24

2 способа удалить пробелы между словами или числами в ячейках Excel

Из этой статьи Вы узнаете 2 быстрых способа удалить лишние пробелы между словами или все пробелы из ячеек Excel. Вы можете использовать функцию TRIM (СЖПРОБЕЛЫ) или инструмент Find & Replace (Найти и заменить), чтобы вычистить содержимое ячеек в Excel.

Когда Вы вставляете данные из внешнего источника на лист Excel (простой текст, числа и т.д.), то можете получить лишние пробелы вместе с важными данными. Это могут быть начальные и конечные пробелы, несколько пробелов между словами или разделители разрядов в числах.

Следовательно, таблица выглядит малость неопрятно и становится трудной для использования. Казалось бы, простая задача может стать непростой. Например, найти покупателя с именем John Doe (нет лишних пробелов между частями имени), в то время как в таблице он сохранён как “John Doe“. Или числа, которые не могут быть просуммированы, а виноваты в этом опять лишние пробелы.

Из этой статьи Вы узнаете, как очистить данные от лишних пробелов:

Удаляем все лишние пробелы между словами, отсекаем начальные и конечные пробелы

Предположим, есть таблица с двумя столбцами. В столбце Name в первой ячейке содержится имя John Doe, записанное корректно, т.е. без лишних пробелов. Все остальные ячейки содержат вариант записи с лишними пробелами между именем и фамилией, а также в начале и в конце (начальные и конечные пробелы). Во втором столбце, с названием Length, показано количество символов в каждом имени.

Читать еще:  Запрет редактирования документа word

Используем функцию «СЖПРОБЕЛЫ» для удаления лишних пробелов

В Excel существует функция TRIM (СЖПРОБЕЛЫ), которая используется для удаления лишних пробелов из текста. Далее Вы найдёте пошаговую инструкцию по работе с этим инструментом:

  1. Рядом со своими данными добавьте вспомогательный столбец. Можете назвать его Trim.
  2. В первой ячейке вспомогательного столбца (C2) введите формулу для удаления лишних пробелов:

  • Скопируйте эту формулу в остальные ячейки столбца. Вы можете использовать советы из статьи Как вставить одинаковую формулу сразу во все выбранные ячейки .
  • Замените исходный столбец полученными данными. Для этого выделите все ячейки вспомогательного столбца и нажмите Ctrl+C, чтобы скопировать данные в буфер обмена.Далее выделите первую ячейку исходного столбца (в нашем случае A2), нажмите Shift+F10 или клавишу вызова контекстного меню, а затем клавишу V (З).
  • Удалите вспомогательный столбец.
  • Готово! Мы удалили все лишние пробелы при помощи функции TRIM (СЖПРОБЕЛЫ). К сожалению, этот способ занимает много времени, особенно, когда таблица достаточно велика.

    Замечание: Если после применения формулы Вы по-прежнему видите лишние пробелы, скорее всего в тексте содержатся неразрывные пробелы. Как их удалить, Вы можете узнать из этого примера.

    Применяем инструмент «Найти и заменить», чтобы удалить лишние пробелы между словами

    Этот вариант требует меньше действий, но позволяет удалить только лишние пробелы между словами. Начальные и конечные пробелы будут также отсечены до 1, но не удалены полностью.

    1. Выделите один или несколько столбцов с данными, в которых нужно удалить лишние пробелы между словами.
    2. Нажмите Ctrl+H, чтобы открылось диалоговое окно Find & Replace (Найти и заменить).
    3. Введите два раза пробел в поле Find What (Найти) и один раз в поле Replace With (Заменить на).
    4. Нажмите кнопку Replace all (Заменить все), а затем ОК, чтобы закрыть появившееся информационное окно.
    5. Повторяйте шаг 4 до тех пор, пока не появится сообщение We couldn’t find anything to replace… (Мы не нашли ничего, что нужно было заменить…).

    Удаляем все пробелы между числами

    Предположим, у Вас есть таблица с числами, в которых группы разрядов (тысячи, миллионы, миллиарды) разделены пробелами. В этом случае Excel рассматривает числа как текст и никакая математическая операция выполнена быть не может.

    Простейший способ избавиться от лишних пробелов – это воспользоваться стандартным инструментом Excel – Find & Replace (Найти и заменить).

    • Нажмите Ctrl+Space (Пробел), чтобы выделить все ячейки в столбце.
    • Нажмите Ctrl+H, чтобы открыть диалоговое окно Find & Replace (Найти и заменить).
    • В поле Find What (Найти) введите один пробел. Убедитесь, что поле Replace With (Заменить на) – пустое.
    • Нажмите кнопку Replace all (Заменить все), затем ОК. Вуаля! Все пробелы удалены.

    Удаляем все пробелы при помощи формулы

    Возможно, Вам пригодится способ удалить все пробелы при помощи формулы. Для этого Вы можете создать вспомогательный столбец и ввести такую формулу:

    Здесь A1 – это первая ячейка столбца с числами или словами, в которой должны быть удалены все пробелы.

    Как убрать лишние пробелы в Excel?

    Рассмотрим способы удаления пробелов в Excel (например, между словами, в начале или конце предложений, в числах).

    Приветствую всех, уважаемые читатели блога TutorExcel.Ru.

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

    Достаточно часто лишние пробелы в Excel встречаются в тексте в следующих случаях:

    • В начале или в конце предложений;
    • Дублирование пробелов;
    • Невидимые символы, в т.ч. неразрывный пробел;
    • В числах (в разделителях разрядов).

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

    Поэтому, чтобы при работе избежать подобных проблем, для корректной работы необходимо удалять лишние символы.

    Как удалить пробелы в Excel?

    Рассмотрим 2 основных способа, как можно удалить лишние символы:

    • Инструмент «Найти и заменить». Удаление пробелов через диалоговое окно;
    • С помощью функций. Формульный вариант удаления.

    Инструмент «Найти и заменить»

    Предположим, что у нас есть текст или таблица со словами, в котором присутствует дублирование пробелов.

    Для начала выделяем диапазон ячеек с данными и выбираем на панели вкладок Главная -> Редактирование -> Найти и выделить -> Заменить либо просто нажимаем сочетание клавиш Ctrl + H:


    Появляется стандартное диалоговое окно замены, затем вводим в поле Найти два пробела, а в Заменить на — один. Нажимаем Заменить все и повторяем операцию до тех пор, пока Excel находит повторения.

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

    С помощью функций

    В этом случае можно воспользоваться стандартной функцией СЖПРОБЕЛЫ, которая удаляет все пробелы, за исключением одиночных между словами.

    Предположим, что у нас имеется список фамилий (столбец A) содержащий лишние пробелы как между словами, так и в начале или конце фамилии. Давайте создадим вспомогательный столбец (столбец B), куда введем формулу СЖПРОБЕЛЫ ссылающуюся на столбец с фамилиями:


    Далее копируем содержимое столбца B и вставляем значения без связей в столбец A, после чего удаляем вспомогательный столбец.
    Минусом данного способа является его неудобство при работе с большими объемами данных, так как для каждой редактируемой ячейки необходимо создавать дополнительное место где будет обрабатываться исходная ячейка.

    Неразрывный пробел в Excel

    В случае если после совершенных действий лишние пробелы все же не получилось удалить, то вероятно в тексте могут содержаться неразрывные пробелы.

    Данный символ внешне выглядит как обычный пробел, однако его нельзя удалить с помощью функции СЖПРОБЕЛЫ или инструмента «Найти и Заменить» (при вводе в поле для замены обычного пробела).


    Как видим в ячейке A2 содержатся лишние пробелы, но функция СЖПРОБЕЛЫ их не удаляет.

    Каждый символ в Excel имеет свою кодировку в таблице знаков ANSI (для ОС Windows), в том числе и интересные нам одиночный пробел (символ 32) и неразрывный (символ 160).

    Поэтому с помощью функции ПОДСТАВИТЬ заменяем неразрывный пробел (символ 160) на обычный (символ 32), а затем к полученному результату применяя функцию СЖПРОБЕЛЫ получаем требуемый результат:


    На самом деле убрать неразрывный пробел можно и с помощью «Найти и заменить», для этого в поле Найти необходимо ввести неразрывный пробел и заменить его либо на обычный, либо удалить, оставив поле Заменить на пустым.

    Возникает вопрос, как это сделать?

    Первый способ — непосредственно скопировать данный символ из текста и ввести в поле Найти.

    Второй способ — воспользоваться Alt-кодом (для систем Windows) и ввести комбинацию Alt + 0160 (удерживая клавишу Alt нужно набрать 0160 на цифровой клавиатуре).

    Как убрать пробелы в числах в Excel?

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

    Предположим, что у нас имеется таблица с числами, где содержатся пробелы. Выделяем диапазон с данными и с помощью инструмента «Найти и Заменить» удаляем пробелы, подставив вместо одиночного пробела пустое поле, как показано в примере выше.

    Аналогичный результат можно получить и с помощью формулы:

    При этом не забудьте умножить результат на 1, чтобы перевести формулу из текста в число.

    Спасибо за внимание!
    Если у вас есть мысли или вопросы по теме статьи — делитесь ими в комментариях.

    Ссылка на основную публикацию
    Adblock
    detector
    ×
    ×