Скрытые символы в Excel
Обновлено: 20.11.2024
Сегодня у меня странная проблема. Текст, видимый в Excel, отличается от того, что видит программа.
В моей камере я вижу.
но когда я загружаю это в переменную в VBA и распечатываю в своем непосредственном окне, я получаю следующее.
Когда я вставил сюда ячейку, вот что я получил.
Когда я захожу в ячейку, я могу удалить "скрытые" символы.
Мой вопрос: как мне найти/удалить/увидеть эти скрытые символы?
Также есть способ смягчить эту проблему. Я предполагаю, что эти проблемы возникают из-за того, что люди копируют из французского приложения MS Word и вставляют в эту ячейку Excel (у меня нет конкретных доказательств, подтверждающих это).
Я думаю, что проблема связана с кодировкой символов, а не со скрытыми символами. На каком языке ваша система? а ворд и эксель? Какие языковые настройки у вас есть для клавиатуры? Все они могут повлиять на текст. (и я должен сказать: ". la loi Canadienne", пожалуйста)
"la loi Canadienne" — это просто ненужные данные, которые я туда вставил. Учитывая, что эта книга используется несколькими людьми на разных машинах, я должен сказать, что язык системы может быть английским или французским, как и приложения. Единственное, что я могу сказать, это то, что в конечном итоге все будут использовать MS-*-2016, но еще не все мигрировали. Чтобы ответить на комментарий конкретно, моя система на английском языке, но Бинг по какой-то причине думает, что система французская. Язык клавиатуры — американский английский, но я меняю его на французский, чтобы использовать акценты. .
2 ответа 2
Он может манипулировать более высокими символами, но они не будут отображаться в непосредственном окне (или в окнах сообщений, если на то пошло).
Я не знаю, почему вы считаете, что вам нужно удалить эти символы, но:
Вы можете определить ошибочные символы, отображая каждый символ по одному и конвертируя как в стандартный код символов, так и в коды символов Unicode.
В Excel вы можете сделать следующее:
Выберите B2:D2 и заполните столько, сколько необходимо.
Вы можете сделать что-то подобное в VBA.
Ваша текстовая строка содержит символ Unicode ZWJ (нулевая ширина-объединитель), для которого десятичный код равен 8205. Таким образом, хотя это прекрасно работает на вашем листе, оно преобразуется в ? в редакторе VBA.
Если вам нужно удалить их, вы можете сделать это на листе с помощью
или эквивалентный код VBA:
Если вы не знакомы, предложите поискать в Интернете ZWJ, функцию VBA ChrW и функцию Excel UNICHAR.
Если это не изолированный экземпляр, но вам нужна подпрограмма для удаления любых символов, которые не могут отображаться в редакторе VBA, вы можете попробовать следующее:
И чтобы показать, как это работает, вот скриншоты MsgBox, созданного из необработанного текста, и текста, созданного пользовательской функцией removeChars выше:
Я не знаю, будет ли это быстрее, но вот еще одна пользовательская функция, использующая регулярные выражения, которая также может делать то же самое:
Эту последнюю пользовательскую функцию можно немного ускорить с помощью раннего связывания и, если вам нужно обработать много строк, сделать это в массивах VBA.
Есть ли в MS Excel 2010 параметр, который будет отображать непечатаемые символы в ячейке (например, пробелы или символ разрыва строки, вводимый нажатием клавиш Alt-Enter)?
вы можете поместить =IF(CLEAN(A1)=A1,"NA","Needs Cleaning") в ячейку рядом с ячейкой рядом с ней, или вы можете использовать условное форматирование, используя char() (или chr в VBA) для поиска возврата каретки (char(13)) или любого другого символа, вот ссылка на номера символов
По какой причине вам необходимо их увидеть? Если вы просто не хотите их видеть, есть способы, которыми мы можем помочь вам достичь другой цели (например, удалить все разрывы строк из столбца ячеек)
Целью отображения непечатаемых символов является просто проверка содержимого ячеек. Поскольку содержание носит технический характер, а возврат каретки является обычным (и ожидаемым) в нем, это нужно делать вручную.
@scott Большое спасибо за примечание об использовании CLEAN(). Эта функция будет очень полезна, хотя, к сожалению, она не поможет в этой конкретной ситуации.
Похоже, вы используете не ту программу для своей задачи, но я понимаю, что иногда это неизбежно. Почему нельзя использовать таблицу в Microsoft Word? Тем не менее, я дал ответ на этот конкретный вопрос ниже.
7 ответов 7
Хотя вы не можете отображать специальные символы непосредственно в ячейке, вы можете использовать формулу в соседнем (вставленном) столбце, чтобы заменить символы ввода и пробелы на символы по вашему выбору!
Например.заменит любой разрыв строки символом слова для разрыва строки. А вложенная формула заменит и пробел, и ввод. (Примечание: чтобы ввести «Ввод» в формулу, вам нужно нажать Alt+Enter при редактировании формулы.
Самый простой способ сделать это — просто изменить шрифт на шрифт со встроенным видимым глифом для пробела (или любого другого символа, который вам может понадобиться идентифицировать)
К сожалению, у меня нет хорошего примера такого шрифта, но очень легко добавить маленькую точку к существующему шрифту, используя любой редактор шрифтов. Только не забудьте переименовать шрифт (не файл шрифта, а ИМЯ шрифта внутри файла шрифта), чтобы было легко отличить этот пользовательский шрифт от исходного, если у вас установлены оба.
EDIT Наконец-то я нашел время сделать такой шрифт! А вот и DottedSpace Mono, основанный на Bitstream Vera Sans Mono, но со встроенными точечными пробелами:
CTRL+H заменяет все пробелы на ~ Это быстро поможет для пробелов без программирования , а для обратного просто замените ~ на " ".
Лучшая программа, которую я нашел для сравнения этих типов файлов, в которых не отображается текст, — это Ultra Edit. Пришлось использовать его для сравнения файлов EDI, интерфейсных файлов, технических загрузок и т. д. MS Office просто не подходит для этой задачи.
Этот метод заменит пробелы, но не все непечатаемые символы, например. CHAR(10) (возврат каретки внутри ячейки, также достигается с помощью Alt-Enter )
Изменение шрифта на тип "Терминал" поможет вам увидеть и изменить их.
Не совсем отвечает на ваш вопрос, но я установил следующий формат числа:
для одинарных кавычек или это
для двойных кавычек. Это заключает в кавычки любой введенный текст. Я также установил шрифт Courier New (или любой другой шрифт фиксированной ширины).
1 Используйте найти и введите пробел
2 Выполните Заменить все и введите "[s-p-a-c-e]"
3 Необязательно: если вы также хотите выделить всю ячейку красным цветом, просто используйте переключатель формата рядом с ней
Результат: эти надоедливые пробелы будут видны очень четко
Зачем мне это нужно: я использовал функцию COUNTA, чтобы найти непустые ячейки в столбце. Однако он возвращал число больше, чем я ожидал. Я отлаживал каждую ячейку одну за другой, и, к моему изумлению, некоторые явно пустые ячейки показывали COUNTA=0, а другие показывали COUNTA=1, что не имеет смысла. Я НЕ мог увидеть разницу между ними. Оказывается, в этой функции учитывается единственный оставшийся пробел, но он не виден НИГДЕ ни в ячейке, ни в поле ввода вверху.
Вывод. Если вы полагаетесь на COUNTA для решения важных задач, вам лучше убедиться, что он не учитывает проблемные места, о существовании которых вы можете не знать.
Зарегистрированный пользователь Дата присоединения 27 марта 2013 г. Местоположение Йоркшир, Англия MS-Off Ver Excel 2007 Сообщения 8
Удалить скрытые символы в Excel
Я импортировал электронную таблицу Excel из Инструментов Google для веб-мастеров, и вся информация заканчивается разрывом строки.
Кто-нибудь знает, как удалить скрытые символы, такие как разрыв строки, из Excel 2010, пожалуйста?
Это необходимо для моей работы.
Мы очень признательны за любую помощь.
Уважаемый участник форума Регистрация 26.10.2008 Местоположение Бирмингем, Великобритания MS-Off Ver Все версии до 2010 Сообщений 1025
Привет, Джеймс
1. Нажмите Ctrl+F, чтобы отобразить вкладку «Поиск» диалогового окна «Найти и заменить».
2. В поле «Найти что» удерживайте нажатой клавишу «Alt» и введите 0010 на цифровой клавиатуре. Может показаться, что в поле «Найти что» ничего нет, но персонаж там есть.
3. Щелкните Заменить все.
Тони
Гуру форума Регистрация 23.06.2007 Местоположение Лондон, Англия MS-Off Ver office 97 ,2007 Сообщений 19,320
какой код символа? используйте =code(right(a1)) чтобы получить его
вы можете найти массовую замену, используя этот код, используя найти/заменить найти, удерживая нажатой клавишу alt, и введите его как 3-значный код, добавив начальный 0, если необходимо, но вы должны использовать цифровую клавиатуру (это немного ударило и промахнулось, так как иногда перестает работать)
заменить оставить это пустое нажатие вернуть
в качестве альтернативы вы можете попробовать = очистить (a1) заполнить затем скопируйте вставку как вставку/специальные/ значения
или, если это не сработает, вы можете попробовать = ПОДСТАВИТЬ (A1, CHAR (10), ""), где 10 соответствует любому коду, который вы обнаружили.
или вы можете попробовать ввести текст в столбцы и посмотреть, сможете ли вы удалить его там (просто выберите данные столбца/текст в столбцы, фиксированная ширина, дважды щелкните любые разрывы, чтобы удалить их, нажмите «Готово»), но чтобы быть уверенным, что нам нужно посмотреть образец
"Если не указано иное, все мои комментарии адресованы OP"
Зарегистрированный пользователь Дата присоединения 27 марта 2013 г. Местоположение Йоркшир, Англия MS-Off Ver Excel 2007 Сообщения 8
Извините, я пробовал это, и это не сработало.
Зарегистрированный пользователь Дата присоединения 27 марта 2013 г. Местоположение Йоркшир, Англия MS-Off Ver Excel 2007 Сообщения 8
Гуру форума Регистрация 23.06.2007 Местоположение Лондон, Англия MS-Off Ver office 97 ,2007 Сообщений 19,320
Зарегистрированный пользователь Дата присоединения 27 марта 2013 г. Местоположение Йоркшир, Англия MS-Off Ver Excel 2007 Сообщения 8
Зарегистрированный пользователь Дата присоединения 27-12-2012 Местоположение US MS-Off Ver Excel 2010 Сообщения 41
Можете ли вы опубликовать пример данных, которые вы пытаетесь изменить, чтобы удалить этот символ?
Гуру форума Регистрация 23.06.2007 Местоположение Лондон, Англия MS-Off Ver office 97 ,2007 Сообщений 19,320
Зарегистрированный пользователь Дата присоединения 27 марта 2013 г. Местоположение Йоркшир, Англия MS-Off Ver Excel 2007 Сообщения 8
Здравствуйте, прикреплена электронная таблица с URL-адресами из инструментов Google для веб-мастеров.
Когда я копирую и вставляю URL-адреса в Word, появляются скрытые абзацы.
Я попробовал рекомендации, рекомендованные выше.
Спасибо за всю вашу помощь в этой отправке.
Гуру форума Регистрация 23.06.2007 Местоположение Лондон, Англия MS-Off Ver office 97 ,2007 Сообщений 19,320
ничего не видно, когда я открываю, все выглядит нормально и выглядит нормально при вставке в слово
� отображается как char 182
вы пытались скопировать его, а затем вставить в поле поиска find/ заменить
Бывший писатель Lifewire Тед Френч является сертифицированным специалистом Microsoft, который преподает и пишет о электронных таблицах и программах для работы с электронными таблицами.
Что нужно знать
- Чтобы удалить символы ASCII, введите =CLEAN(Text).
- Используйте функцию ЗАМЕНА, чтобы преобразовать символы Юникода в символы ASCII, которые можно удалить с помощью функции ОЧИСТКА.
Вот как использовать функцию очистки в Microsoft Excel 2019, 2016, 2013, 2010 и Excel для Microsoft 365, чтобы удалить многие непечатаемые компьютерные символы, скопированные или импортированные на лист. Такие символы могут мешать печати, сортировке и фильтрации данных.
Синтаксис и аргументы функции CLEAN
Синтаксис функции – это ее структура, включающая имя, квадратные скобки и аргументы. Синтаксис функции CLEAN:
Текст
в расположение этих данных на листе, который вы хотите очистить.
Например, ячейка A2 содержит следующую формулу:
Чтобы убрать это, вы должны ввести формулу в другую ячейку листа:
В результате останется только слово
Помимо удаления непечатаемых символов, функция ОЧИСТКА также преобразует числа в текст, что может привести к ошибкам, если вы позже будете использовать эти данные в вычислениях.
Удаление непечатаемых символов, не входящих в ASCII
Хотя функция CLEAN отлично подходит для удаления непечатаемых символов ASCII, есть несколько непечатаемых символов, выходящих за пределы диапазона ASCII, которые вы, возможно, захотите удалить.
К непечатаемым символам Unicode относятся числа 129, 141, 143, 144 и 157. Кроме того, вы можете удалить 127, который является удаляемым символом и также является непечатаемым.
Один из способов удалить такие данные – преобразовать их с помощью функции ПОДСТАВИТЬ в символ ASCII, который можно удалить с помощью функции ОЧИСТИТЬ. Вы можете вложить функции ПОДСТАВИТЬ и ОЧИСТИТЬ, чтобы упростить задачу.
Кроме того, можно просто заменить оскорбительный непечатаемый символ ничем ("").
Что такое непечатаемые символы?
Каждый символ на компьютере — печатаемый и непечатаемый — имеет число, известное как код или значение символа Unicode. Другой, более старый и более известный набор символов — ASCII, обозначающий Американский стандартный код для обмена информацией, — был включен в набор Unicode.
В результате первые 32 символа (от 0 до 31) наборов Unicode и ASCII идентичны. Они используются программами для управления периферийными устройствами, такими как принтеры, на разных платформах. Таким образом, они не предназначены для использования на листе и могут вызвать ошибки, если они присутствуют.
Функция CLEAN, предшествующая набору символов Unicode, удаляет первые 32 непечатаемых символа ASCII и те же символы из набора Unicode.
Читайте также: