#excel #vba #trim
#excel #vba #обрезка
Вопрос:
Я скопировал некоторые данные с веб-сайта на рабочий лист и заметил, что некоторые ячейки в дополнение к ожидаемому значению также содержат завершающий пробел.
Я хотел удалить эти пробелы из-за проблем с моим кодом. Я обнаружил конкретную ячейку с этим пробелом и попытался:
Worksheets(2).Range("D17").Value = Trim(Worksheets(2).Range("D17").Value)
- Пробел все еще был там.
Затем я попытался:
Worksheets(2).Range("D17").Value = WorksheetFunction.Trim(Worksheets(2).Range("D17").Value)
- По-прежнему безуспешно.
Replace
Функция удаляет не только начальные и конечные пробелы, но и пробелы внутри строки:
Worksheets(2).Range("D17").Value = Replace(Worksheets(2).Range("D17").Value," ","")
- Некоторые ячейки содержали два слова, поэтому это было невозможно.
Я мог бы проверить, является ли последний символ пробелом, и удалить его для каждой ячейки, но это не показалось элегантным решением, и остается главный вопрос: почему Trim
функции не работают?
Ответ №1:
Потратив оооочень много времени на поиск в сети, я обнаружил здесь, что существует также другой символ для обозначения пробела, вывод Chr(160)
и по какой-то причине Trim
функции игнорируют его. Итак, решением в моем случае было сначала заменить все эти «разные» пробелы, а затем обрезать значения:
Worksheets(2).Range("D17").Value = Replace(Worksheets(2).Range("D17").Value, Chr(160), " ")
Worksheets(2).Range("D17").Value = Trim(Worksheets(2).Range("D17").Value)
В случае, если вы столкнулись с аналогичной проблемой и столкнулись с Chr(160)
«неизвестным» символом, отличным от, вы можете узнать, что это за символ, выделив этот символ и используя Asc
функцию.
Комментарии:
1. Ascii 160 — это неразрывный пробел.
2. И вы не первый, кто сталкивается с этим с разочарованием, dukelupus.wordpress.com/2008/03/14 /…
3. Спасибо за ваш вклад. Я уверен, что я не первый. Я надеюсь, что я помогу стать последним.