Обрезка всех пространств

У Судхакара есть данные в столбце A, в конце которых есть пробелы. Если он использует функцию TRIM для данных, она удаляет некоторые конечные пробелы, но не все из них. Он задается вопросом, почему некоторые пробелы будут пропущены и как он может удалить их все.

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

Прежде всего, если вы используете TRIM для ячейки, помните, что он удаляет только пробелы. Это, по определению, означает, что удаляются только символы с кодом ASCII 32. К сожалению, есть другие символы ASCII, которые отображаются как «пробелы», но на самом деле не являются пробелами. TRIM не удалит их.

Было бы полезно, если бы вы могли выяснить, что это за надоедливые символы, верно? Что ж, если текст в ячейке не такой длинный, вот небольшой удобный макрос, который будет смотреть на содержимое ячейки и отображать каждый символ по очереди вместе с его значением ASCII:

 Sub  StringContents () Dim sTemp As String Dim sMsg As String Dim J As Integer If Selection.Cells.Count> 1 Then sMsg = "Пожалуйста, выберите только одну ячейку" Else sMsg = "Полная строка:>" & ActiveCell.Value & "" & sTemp & " 

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

Как только вы узнаете значение ASCII оскорбительного символа, который TRIM не удалит, вы можете сделать замена этого персонажа. Например, если пробел показывает значение ASCII 160, вы можете выполнить замену следующим образом:

 = SUBSTITUTE (A1, CHAR (160), "") 

Это заменяет фактический символ пробела на любые символы ASCII 160 в строке. Аналогичным образом вы можете удалить другие похожие ложные пробелы.

Конечно, вы можете попробовать использовать другую функцию Excel, чтобы избавиться от некоторых непечатаемых символов ASCII, например:

 = CLEAN (A1) 

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

Вы даже можете начать комбинировать функции в своей формуле очистки следующим образом:

 = TRIM (CLEAN (A1)) 

сделайте следующий шаг следующим образом:

 = TRIM (SUBSTITUTE (CLEAN (A2), CHAR (160), "")) 

Эта формула избавляется от 160 символов ASCII, а также вещи, перехваченные CLEAN, а затем TRIM для этого результата.

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

 Sub CleanCells () Dim rTarget As Range Dim c As Range Dim sTemp As String Dim J As  Целочисленный набор rTarget = Selection.SpecialCells (xlCellTypeConstants, 2) Для каждого c в rTarget sTemp = c.Value для J = от 1 до 31 sTemp = Replace (sTemp, Chr (J), "") Next J для J = 127 до 255  sTemp = Replace (sTemp, Chr (J), "") Next J c.Value = sTemp Next cEnd Sub 

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

Оцените статью
Frestage.ru
Добавить комментарий