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

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

  1. В ячейке, содержащей одно из маленьких прямоугольников, выделите поле и нажмите Ctrl + C. Это копирует символ в буфер обмена.

  2. Выберите «Заменить» в меню «Правка» или нажмите Ctrl + H. Excel отображает вкладку «Заменить» диалогового окна «Найти и заменить». (См. Рис. 1.)

  3. Установите курсор в поле «Найти» и нажмите Ctrl + V. Это вставит содержимое буфера обмена (нарушающий символ) в поле «Найти». Скорее всего, персонаж будет не похож на маленькую рамку, которую вы выбрали и скопировали на шаге 1.

  4. Если на шаге 3 ничего не было вставлено, закройте диалоговое окно и повторите шаги еще раз. Если ничего не вставлено, вы не сможете использовать «Найти и заменить», чтобы избавиться от непечатаемых символов, и вы можете пропустить остальные шаги.

  5. Если вы хотите просто удалить символы, убедитесь, что в поле «Заменить на» ничего нет. Если вы хотите заменить символы пробелами, поставьте один пробел в поле «Заменить на».

  6. Нажмите «Заменить все».

Этот подход может работать, а может и не работать, в основном в зависимости от 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 [Интеллектуальное избавление от непечатаемых символов].