Разумное избавление от непечатаемых символов

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

Чтобы избавиться от этих символов, попробуйте использовать функцию «Найти и заменить» в Excel. . Попробуйте выполнить следующие действия:

  1. В ячейке, содержащей одно из маленьких прямоугольников, выделите поле и нажмите Ctrl + C . Это скопирует символ в буфер обмена.
  2. Выберите «Заменить» в меню «Правка» или нажмите Ctrl + H . Excel отображает вкладку «Заменить» диалогового окна «Найти и заменить». (См. Рис. 1.)
  3. Рис. 1. Вкладка «Заменить» диалогового окна «Найти и заменить».

  4. Поместив курсор в поле «Найти», нажмите Ctrl + V . Это вставляет содержимое буфера обмена (нарушающий символ) в поле «Найти». Скорее всего, персонаж будет не похож на маленькую рамку, которую вы выбрали и скопировали на шаге 1.
  5. Если на шаге 3 ничего не было вставлено, закройте диалоговое окно и повторите шаги. Если ничего не вставлено, вы не сможете использовать функцию «Найти и заменить», чтобы избавиться от непечатаемых символов, и вы можете пропустить остальные шаги.
  6. Если хотите. чтобы просто удалить символы, убедитесь, что в поле «Заменить на» ничего нет. Если вы хотите заменить символы пробелами, поместите один пробел в поле «Заменить на».
  7. Нажмите «Заменить все».

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

Одна вещь, которую нужно попробовать, – это использовать Word в ваших операциях «очистки». Скопируйте данные из Excel в документ Word (вставьте как обычный текст), а затем замените недопустимые символы. Затем вы можете вставить данные обратно в Excel. Некоторые люди сообщают, что они получают именно те результаты, которые они хотят, используя этот подход к работе с данными туда и обратно.

Конечно, вы можете использовать макрос, чтобы избавиться от оскорбительных символов. Нетрудно создать собственную версию функции CLEAN workheet, которая вместо простого удаления непечатаемых символов заменяет их пробелами.. Рассмотрим следующий пример макроса:

 Function ReplaceClean1 (sText As String, Optional sSubText As String = "") Dim J As Integer Dim vAddText vAddText = Array (Chr (129), Chr (141),  Chr (143), Chr (144), Chr (157)) Для J = от 1 до 31 sText = Replace (sText, Chr (J), sSubText) Next For J = 0 To UBound (vAddText) sText = Replace (sText,  vAddText (J), sSubText) Далее ReplaceClean1 = sTextEnd Function 

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

 = ReplaceClean1 (B14) 

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

 = ReplaceClean1 (A1, "-") 

Следующее использование просто удаляет непечатаемые символы , то же, что и функция CLEAN:

 = ReplaceClean1 (A1, "") 

Если вы посмотрите на макрос ReplaceClean1, представленный ранее, вы увидите, что он использует функция “Заменить”. Эта функция VBA доступна не во всех версиях VBA, используемых с различными версиями Excel. Если вы попробуете макрос и получите ошибку в одной из строк, использующих функцию Replace, используйте вместо этого эту версию макроса ReplaceClean:

 Function ReplaceClean2 (sText As String, Optional sSubText As  String = "") Dim J As Integer Dim vAddText Dim aWF As WorksheetFunction Установить aWF = Application.WorksheetFunction vAddText = Array (Chr (129), Chr (141), Chr (143), Chr (144), Chr (157))  Для J = от 1 до 31 sText = aWF.Substitute (sText, Chr (J), sSubText) Далее Для J = 0 В UBound (vAddText) sText = aWF.Substitute (sText, vAddText (J), sSubText) Далее  Установить функцию aWF = NothingEnd 

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