Основная и досадная проблема с лишними пробелами, которая мешает их удалению вручную — пробел является невидимым символом.

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

О вреде лишних пробелов

Наличие лишних пробелов может помешать работе в следующих случаях:

  • Требуется сравнить ячейки между собой. Это может быть как поиск дубликатов внутри диапазона, так и сравнение двух списков и поиск повторяющихся значений между ними
  • При построении сводных таблиц строки «схлопываются», если являются полностью идентичными, и разница в один пробел не позволит им «схлопнуться». Алгоритм построения сводных таблиц также сравнивает ячейки между собой.
  • С помощью «ВПР» или сочетания ИНДЕКС/ПОИСКПОЗ можно «подтянуть» данные из одной таблицы в другую. Эти функции тоже сравнивают ячейки при поиске и учитывают разницу в виде пробелов.

Обычно лишние пробелы не несут значимости в тексте, и популярная задача — удалить их из текста. Но удалить именно лишние, чтобы фразы не склеивались в одно слово.

Способы удаления лишних пробелов

От обычных пробелов можно избавиться тремя известными мне способами. Рассмотрим их подробнее.

С помощью процедуры «Найти и заменить»

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

Тем не менее, на многих сайтах рекомендуется этот способ. Вызвать процедуру замены сочетанием CTRL+F, вбить в поля «Найти» и «Заменить на» 2 пробела и 1 пробел соответственно и произвести замену, нажав кнопку «Заменить все».

Удаление лишних пробелов между словами с помощью замены

Важно делать это неоднократно — до тех пор, пока процедура не выведет сообщение:

Почему так? Потому что всегда есть вероятность, что между словами было 3 и более пробелов.

Функцией СЖПРОБЕЛЫ

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

  • после последнего слова
  • перед первым словом
  • заменяя два и более пробела между словами на один
Применение формулы СЖПРОБЕЛЫ
Функция СЖПРОБЕЛЫ

С помощью готовой процедуры в !SEMTools

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

Для таких случаев и была создана процедура удаления лишних пробелов в !SEMTools. Выделяем список ячеек, жмем на кнопку в меню. Вуаля!

Удаляем пробелы процедурой
Удаление лишних пробелов в 1 клик

Удалить переносы строк внутри ячеек («энтеры»)

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

В !SEMTools такая возможность тоже есть! Т.к. надстройка добавляет регулярные выражения в Excel. В синтаксисе регулярных выражений \s (space) обозначает любые виды пробелов, включая переносы строк. Заменой можно преобразовать их в обычные пробелы, и если останутся лишние, уже повторить шаг выше.

Удаляем разрывы строк в ячейках
Удалить переносы (разрывы) строк в ячейках столбца в Excel

Удалить пробелы в конце строки

Довольно гипотетическая, но все же возможная ситуация — когда нужно удалить только пробелы в конце строки, а если есть два или более пробелов подряд в середине строки, такие не удалять. Здесь снова на помощь придут регулярные выражения:

=REGEXREPLACE(A1;"\s+$";"")

Как видно, регулярное выражение заменяет пробел или несколько пробелов на пустоту, если они идут в конце строки.

Удалить пробелы в начале строки

Аналогично, если задача удалить только пробелы в начале строк, а другие лишние пробелы не трогать. Синтаксис будет чуть другим:

=REGEXREPLACE(A1;"^\s+";"")

Напомню, функции регулярных выражений не включены в Excel по умолчанию, но их поддержку можно включить с помощью некоторого кодинга на VBA. Если у вас !SEMTools, и это не потребуется. Использование функций на листе не ограничено и доступно даже в базовой бесплатной версии. Достаточно установить Excel-надстройку.