Разумное избавление от непечатаемых символов (Microsoft Excel)
Если вы работаете с файлами, источником которых не является Excel, иногда в ячейках могут появляться символы, которые Excel не знает, как правильно отображать. Например, у вас может быть текстовый файл с разделителями-запятыми, созданный бухгалтерским программным обеспечением вашей компании, и вы загружаете его в Excel. В некоторых ячейках вы можете заметить небольшие прямоугольники. Они представляют собой непечатаемые символы. Excel отображает маленькие поля, чтобы вы знали, что символ присутствует, даже если он не может быть отображен или напечатан.
Чтобы избавиться от этих символов, попробуйте использовать функцию «Найти и заменить» в Excel. Попробуйте выполнить следующие действия:
-
В ячейке, содержащей одно из маленьких прямоугольников, выделите поле и нажмите Ctrl + C. Это копирует символ в буфер обмена.
-
Выберите «Заменить» в меню «Правка» или нажмите Ctrl + H. Excel отображает вкладку «Заменить» диалогового окна «Найти и заменить». (См. Рис. 1.)
-
Установите курсор в поле «Найти» и нажмите Ctrl + V. Это вставит содержимое буфера обмена (нарушающий символ) в поле «Найти». Скорее всего, персонаж будет не похож на маленькую рамку, которую вы выбрали и скопировали на шаге 1.
-
Если на шаге 3 ничего не было вставлено, закройте диалоговое окно и повторите шаги еще раз. Если ничего не вставлено, вы не сможете использовать «Найти и заменить», чтобы избавиться от непечатаемых символов, и вы можете пропустить остальные шаги.
-
Если вы хотите просто удалить символы, убедитесь, что в поле «Заменить на» ничего нет. Если вы хотите заменить символы пробелами, поставьте один пробел в поле «Заменить на».
-
Нажмите «Заменить все».
Этот подход может работать, а может и не работать, в основном в зависимости от 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)) For J = 1 To 31 sText = Replace(sText, Chr(J), sSubText) Next For J = 0 To UBound(vAddText) sText = Replace(sText, vAddText(J), sSubText) Next ReplaceClean1 = sText End Function
Вы используете эту функцию в своем рабочем листе следующим образом:
=ReplaceClean1(B14)
В этом случае все непечатаемые символы в ячейке B14 заменяются пробелом. Если вы хотите, чтобы символы были заменены чем-то другим, просто укажите текст для замены. В следующем примере непечатаемые символы заменяются тире:
=ReplaceClean1(A1,"-")
Следующее использование просто удаляет непечатаемые символы, как и функция CLEAN:
=ReplaceClean1(A1,"")
Если вы посмотрите на макрос ReplaceClean1, представленный ранее, вы увидите, что он использует функцию Replace. Эта функция VBA доступна не во всех версиях VBA, используемых с различными версиями Excel. Если вы попробуете макрос и получите ошибку в одной из строк, использующих функцию Replace, используйте вместо этого эту версию макроса ReplaceClean:
Function ReplaceClean2(sText As String, Optional sSubText As String = " ") Dim J As Integer Dim vAddText Dim aWF As WorksheetFunction Set aWF = Application.WorksheetFunction vAddText = Array(Chr(129), Chr(141), Chr(143), Chr(144), Chr(157)) For J = 1 To 31 sText = aWF.Substitute(sText, Chr(J), sSubText) Next For J = 0 To UBound(vAddText) sText = aWF.Substitute(sText, vAddText(J), sSubText) Next ReplaceClean2 = sText Set aWF = Nothing End Function
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (2947) относится к Microsoft Excel 97, 2000, 2002 и 2003. Вы можете найти версию этого совета для ленточного интерфейса Excel (Excel 2007 и новее) здесь:
link: / excelribbon-Getting_Rid_of_Non-Printing_Characters_Intelligently [Интеллектуальное избавление от непечатаемых символов]
.