Vba excel удалить непечатаемые символы

Skip to content

На чтение 3 мин. Просмотров 5k.

Что макрос делает: Иногда у вас есть непечатаемые символы в ваших данных. Эти символы должны быть удалены, прежде чем можно будет использовать данные для серьезного анализа.
Вы, можете записывать макрос выполнения поиска и замены (записанный макрос является отличным способом для автоматизации поиска и замены процедур). Таким образом, ваша первая реакция может быть, чтобы просто найти и заменить эти символы. Проблема состоит в том, что эти непечатаемые символы являются по большей части невидимым и, таким образом, трудно очистить обычной функцией поиска и замены. Самый простой способ, чтобы очистить их через VBA.
Если вы боретесь с невидимыми символами, используйте этот общий макрос, чтобы найти и удалить все непечатаемые символы.

Содержание

  1. Как макрос работает
  2. Код макроса
  3. Как этот код работает
  4. Как использовать

Как макрос работает

Этот макрос является относительно простым, поиск и замена обычное дело. Мы используем метод Replace, говоря Excel найти и заменить. Это похоже на синтаксис ручного выполнения поиска и замены.
Разница заключается в том, что кодирование текста использует коды символов, чтобы указать наш текст для поиска. Каждый символ имеет исходный код ASCII, похожий на серийный номер. Например, строчная буква А имеет ASCII-код 97, строчной букве С соответствует ASCII-код 99.
Аналогичным образом, невидимые символы также имеют код:
Код символа перевода строки — 10.
Код возврата каретки — 13.
Код неразрывного пробела — 160.
Этот макрос использует метод Replace, передавая код ASCII каждого символа в качестве поискового элемента. Затем каждый код символа заменяется пустой строкой:

Код макроса

Sub UdalitNepechataemieSimvoli()
'Шаг 1: Удалить перевод строки
ActiveSheet.UsedRange.Replace What:=Chr(10), Replacement:=""
'‘Шаг 2: Удалить возврат каретки
ActiveSheet.UsedRange.Replace What:=Chr(13), Replacement:=""
'Шаг 3: Удалить неразрывный пробел
ActiveSheet.UsedRange.Replace What:=Chr(160), Replacement:=""
End Sub

Как этот код работает

  1. Шаг 1 ищет и удаляет символы перевода строки. Код этого символа равен 10. Мы можем определить код символа 10, передавая идентификатор с помощью функции Chr. После того, как Chr (10) определяется как поисковый элемент, то макрос передает пустую строку к замене аргумента.
    Обратите внимание на использование ActiveSheet.UsedRange. Excel ищет во всех ячейках, которые имели данные, введенные в них. Вы можете заменить объект UsedRange с реальным диапазоном, если это необходимо.
  2. Шаг 2 находит и удаляет символ возврата каретки.
  3. Шаг 3 находит и удаляет неразрывные пробелы.

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

Как использовать

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

  1. Активируйте редактор Visual Basic, нажав ALT + F11.
  2. Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
  3. Выберите Insert➜Module.
  4. Введите или вставьте код.

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

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

Самый простой способ — очистить их через VBA. Если вы боретесь с невидимыми символами, используйте этот макрос, чтобы найти и удалить все непечатаемые символы.

Этот макрос является относительно простым. Мы используем метод Replace, говоря Excel найти и заменить. Это похоже на синтаксис ручного выполнения поиска и замены. Разница заключается в том, что кодирование текста использует коды символов, а не сами символы.

Каждый символ имеет исходный код ASCII, похожий на серийный номер. Например, строчная буква А имеет ASCII-код 97, строчной букве С соответствует ASCII-код 99.

Аналогичным образом, невидимые символы также имеют код:

— Код символа переноса строки — 10.

— Код возврата каретки — 13.

— Код неразрывного пробела — 160.

Этот макрос использует метод Replace, чтобы передать код ASCII каждого символа в качестве поискового элемента. Затем каждый код символа заменяется пустотой.

удалить непечатные символы в диапазоне

SergeyKorotun

Дата: Пятница, 20.06.2014, 13:50 |
Сообщение № 1

Группа: Проверенные

Ранг: Обитатель

Сообщений: 301


Репутация:

15

±

Замечаний:
0% ±


Excel 2007

Файл не прикрепляю, т.к. во-первых данные не для публичного просмотра, а во-вторых, на одних компьютерах непечатные символы видны, а на вторых нет.
Где в екселе можно отключить отображение непечатных символов?
Как макросом удалить непечатные символы?
На листе один диапазон, начало в ячейке А1.

Сообщение отредактировал SergeyKorotunПятница, 20.06.2014, 13:52

 

Ответить

DJ_Marker_MC

Дата: Пятница, 20.06.2014, 13:57 |
Сообщение № 2

Группа: Друзья

Ранг: Ветеран

Сообщений: 991


Репутация:

213

±

Замечаний:
0% ±


Excel 2019

исходя из одного описания, то так

Код

=СЖПРОБЕЛЫ(ПЕЧСИМВ(ячейка со значением))

 

Ответить

nilem

Дата: Пятница, 20.06.2014, 15:51 |
Сообщение № 3

Группа: Авторы

Ранг: Старожил

Сообщений: 1612


Репутация:

563

±

Замечаний:
0% ±


Excel 2013, 2016

Как макросом удалить непечатные символы?

вот здесь посмотрите
(только что нарисовал, еще тепленький :))


Яндекс.Деньги 4100159601573

 

Ответить

SergeyKorotun

Дата: Пятница, 20.06.2014, 17:20 |
Сообщение № 4

Группа: Проверенные

Ранг: Обитатель

Сообщений: 301


Репутация:

15

±

Замечаний:
0% ±


Excel 2007

[vba]

Код

Sub example_01()      
         With Range(«E1:E» & Cells(Rows.Count, 5).End(xlUp).Row)      
               .Offset(, 3).Value = Application.Trim(Application.Clean(.Value))      
         End With      
End Sub  

[/vba]
А как удалить в непрерывном диапазоне, в который входит ячейка А1?
Как то через USEDRANGE

Я правильно понял — в примере лишнее удаляется в пересечении столбца Е и трех соседних столбцов справа со строками с первой по самую нижнюю строку, в которой заполнена ячейка в столбце Е?

Сообщение отредактировал SergeyKorotunПятница, 20.06.2014, 17:40

 

Ответить

_Boroda_

Дата: Пятница, 20.06.2014, 18:39 |
Сообщение № 5

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

Предположу, что вот так нужно:
[vba]

Код

Sub example_01()
           With UsedRange.Cells
               .Value = Application.Trim(Application.Clean(.Value))
           End With
End Sub

[/vba]

Я правильно понял — в примере лишнее удаляется в пересечении столбца Е и трех соседних столбцов справа со строками с первой по самую нижнюю строку, в которой заполнена ячейка в столбце Е?

Почти.
Просматриваем ячейки с Е1 по последнюю заполненную в столбце Е, удаляем непечатные символы и результат записываем через 3 ячейки вправо


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

nilem

Дата: Пятница, 20.06.2014, 18:42 |
Сообщение № 6

Группа: Авторы

Ранг: Старожил

Сообщений: 1612


Репутация:

563

±

Замечаний:
0% ±


Excel 2013, 2016

Непрерывный диапазон, видимо, имеется в виду
[vba]

Код

Sub example_01()
With Range(«A1»).CurrentRegion
»or
‘With ActiveSheet.UsedRange
     .Value = Application.Trim(Application.Clean(.Value))
End With
End Sub

[/vba]
в примере ст. Н заполняется значениями (без лишних пробелов и непечат. символов) из ст. Е


Яндекс.Деньги 4100159601573

 

Ответить

_Boroda_

Дата: Пятница, 20.06.2014, 19:03 |
Сообщение № 7

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

With Range(«A1»).CurrentRegion
.Value = Application.Trim(Application.Clean(.Value))
End With

Николай, а так работает только для непрерывного диапазона, включающего в себя А1. А если их (непр. диапазонов) на листе несколько?


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

nilem

Дата: Пятница, 20.06.2014, 20:23 |
Сообщение № 8

Группа: Авторы

Ранг: Старожил

Сообщений: 1612


Репутация:

563

±

Замечаний:
0% ±


Excel 2013, 2016

Согласен. Если несколько непр. диап-в,то, видимо потребуется UsedRange
ориентировался на это

А как удалить в непрерывном диапазоне


Яндекс.Деньги 4100159601573

 

Ответить

SergeyKorotun

Дата: Пятница, 20.06.2014, 23:03 |
Сообщение № 9

Группа: Проверенные

Ранг: Обитатель

Сообщений: 301


Репутация:

15

±

Замечаний:
0% ±


Excel 2007

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

На листе у меня всего один диапазон. Термин «непрерывный» я употребил, чтобы упростить определение нижней и правой границы диапазона, применив стандартные вба-команды как CurrentRegion, UsedRange, …

А где в екселе можно включить/отключить отображение непечатных символов(дома нет, на работе в том же файле есть)?

 

Ответить

Предположим, есть ряд данных, например JAMES0898 # 4% ^ {}, который содержит не буквенно-цифровые символы на листе, и теперь вам просто нужно удалить не буквенно-цифровые символы и сохранить буквенно-цифровые символы. Например, JAMES0898 # 4% ^ {} > JAMES0898. Как быстро удалить эти не буквенно-цифровые символы в Excel?

  • Удалите не буквенно-цифровые символы с помощью кода VBA
  • Удалите не буквенно-цифровые символы с помощью функции, определяемой пользователем
  • Удалить не буквенно-цифровые символы с помощью Kutools for Excel

Удалите не буквенно-цифровые символы с помощью кода VBA

С помощью следующего короткого кода VBA вы также можете удалить не буквенно-цифровые символы. Сделать это можно так:

1. Нажмите другой + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модули, а затем вставьте ниже код VBA в модуль:

VBA: удалить все не буквенно-цифровые символы

Sub RemoveNotAlphasNotNum()
'Updateby2014128
Dim Rng As Range
Dim WorkRng As Range
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
For Each Rng In WorkRng
    xOut = ""
    For i = 1 To Len(Rng.Value)
        xTemp = Mid(Rng.Value, i, 1)
        If xTemp Like "[a-z.]" Or xTemp Like "[A-Z.]" Or xTemp Like "[0-9.]" Then
            xStr = xTemp
        Else
            xStr = ""
        End If
        xOut = xOut & xStr
    Next i
    Rng.Value = xOut
Next
End Sub

3, нажмите F5 ключ или щелкните Run кнопку для выполнения кода.

4. Затем выберите диапазон, из которого вы хотите удалить все не буквенно-цифровые символы во всплывающем диалоговом окне, и щелкните значок OK кнопку.

Теперь все не буквенно-цифровые символы были удалены из выбранного диапазона. Смотрите скриншот:

2 щелчка мышью, чтобы удалить все не буквенно-цифровые символы с помощью замечательного инструмента

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

Удалите не буквенно-цифровые символы с помощью функции, определяемой пользователем

Вы также можете определить настраиваемую функцию для удаления всех не буквенно-цифровых символов из ячеек в Excel.

1, нажмите другой + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модули, а затем вставьте приведенный ниже код в модуль:

Функция, определяемая пользователем: удаление всех не буквенно-цифровых символов

Function DeleteNonAlphaNumeric(xStr As String) As String
Dim xStrR As String
Dim xCh As String

Dim xStrMode As String
Dim xInt As Integer
    xStrMode = "[A-Z.a-z 0-9]"
    xStrR = ""
    For xInt = 1 To Len(xStr)
        xCh = Mid(xStr, xInt, 1)
        If xCh Like xStrMode Then
            xStrR = xStrR & xCh
        End If
    Next
    DeleteNonAlphaNumeric = xStrR
End Function
    

3. Теперь вернитесь на рабочий лист, выберите пустую ячейку и введите формулу = DeleteNonAlphaNumeric (B3), а затем перетащите загрузку дескриптора автозаполнения, чтобы применить эту формулу к другим ячейкам.


Удалить не буквенно-цифровые символы с помощью Kutools for Excel

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

Kutools for Excel— Включает более 300 удобных инструментов для Excel. Полнофункциональная бесплатная пробная версия 30-день, кредитная карта не требуется! Get It Now

Если вы установили Kutools for Excel, выполните следующие действия:

1. Выберите диапазон, из которого нужно удалить не буквенно-цифровые символы, и нажмите Кутулс > Текст > Удалить символы.

2, Затем Удалить символы появится диалоговое окно, только отметьте Не буквенно-цифровые и нажмите Ok кнопку.

Теперь все не буквенно-цифровые символы были удалены из текстовых строк.


Статьи по теме:


Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Комментарии (3)


Оценок пока нет. Оцените первым!

1 / 1 / 0

Регистрация: 15.02.2011

Сообщений: 33

1

А как можно выкинуть из строки непечатные символы?

06.07.2011, 11:23. Показов 3724. Ответов 3


Студворк — интернет-сервис помощи студентам

Есть ли способ выкинуть из переменной типа String непечатные символы
(не мат чтобы все остальное осталось ?
Т.е. чтобы символы в строке с кодами ASCII < 32 прибились?

Или в цикле перебирать каждый символ и формировать новую строку ?
Если так, то как можно получить доступ к отдельным элементам строки ?

Вариант szStringExample[12] не прокатывает.
Справкой воспользоваться не могу — не работает. :^(
Заранее спс.



0



snov

06.07.2011, 11:48

2

Можно в цикле перебрать все интересующие символы, а потом

Visual Basic
1
sSTR=Replace(sSTR, chr(i), '')

Тут символ Chr(i) — символ с ASCII=i, заменяется на пустое место

1 / 1 / 1

Регистрация: 10.04.2011

Сообщений: 415

06.07.2011, 12:33

3

я пользуюсь для доступа к отдельным симdолам строки функцией mid(строка, начало, длина), replace не советую, она не работает в старых версиях экселя.



0



1 / 1 / 0

Регистрация: 15.02.2011

Сообщений: 33

06.07.2011, 13:17

 [ТС]

4

Спасибо вам огромное, выручили !!!



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

06.07.2011, 13:17

4

Like this post? Please share to your friends:
  • Vba excel удалить комментарии
  • Vba excel файлы примеров
  • Vba excel удалить колонки
  • Vba excel удалить значения ячеек
  • Vba excel удалить все пустые строки в excel