Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Формулы КОДСИМВ() и СИМВОЛ() дают разные результаты - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Формулы КОДСИМВ() и СИМВОЛ() дают разные результаты (Формулы/Formulas)
Формулы КОДСИМВ() и СИМВОЛ() дают разные результаты
pabchek Дата: Пятница, 21.08.2015, 14:32 | Сообщение № 1
Группа: Проверенные
Ранг: Ветеран
Сообщений: 931
Репутация: 218 ±
Замечаний: 0% ±

Excel 2007
И здравствуйте!
Обрабатывая отчеты из 1С, столкнулся с проблемой - функция КОДСИМВ() даёт значение, а СИМВОЛ() рисует по этому результату знак вопроса "?". В файле примере - символ "Ö" = код 63.
Мало того, 1С-ник говорит, что при прямом сохранении этих символов по коду происходит то же самое. Понятно, что в екселе можно подстановками решить эту проблему.
Вопрос: почему этот символ отображается не корректно? Будет ли проблема в VBA аналогичная 1С (не силен, к сожалению)? И если да, то возможно ли решение в VBA (чтобы по аналогии применить в 1С)?
К сообщению приложен файл: 5593276.xls (83.0 Kb)


"Учиться, учиться и еще раз учиться!"
WM: R399923528092
 
Ответить
СообщениеИ здравствуйте!
Обрабатывая отчеты из 1С, столкнулся с проблемой - функция КОДСИМВ() даёт значение, а СИМВОЛ() рисует по этому результату знак вопроса "?". В файле примере - символ "Ö" = код 63.
Мало того, 1С-ник говорит, что при прямом сохранении этих символов по коду происходит то же самое. Понятно, что в екселе можно подстановками решить эту проблему.
Вопрос: почему этот символ отображается не корректно? Будет ли проблема в VBA аналогичная 1С (не силен, к сожалению)? И если да, то возможно ли решение в VBA (чтобы по аналогии применить в 1С)?

Автор - pabchek
Дата добавления - 21.08.2015 в 14:32
SLAVICK Дата: Пятница, 21.08.2015, 14:44 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
У Вас 3-й символ не входит в таблицу символов ascii - вот он и выдает код символа знака вопроса.
Обойти можно используя UDF:
[vba]
Код

'Для получения кода символа
Function CH(s$) As Long
        CH = AscW(s)
End Function
'Для получения символа по коду
Function CHW(s#) As String
        CHW = ChrW(s)
End Function
[/vba]
Она возвращает коды символов и символы Юнико́да
К сообщению приложен файл: 0561919.xls (96.0 Kb)


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Пятница, 21.08.2015, 15:18
 
Ответить
СообщениеУ Вас 3-й символ не входит в таблицу символов ascii - вот он и выдает код символа знака вопроса.
Обойти можно используя UDF:
[vba]
Код

'Для получения кода символа
Function CH(s$) As Long
        CH = AscW(s)
End Function
'Для получения символа по коду
Function CHW(s#) As String
        CHW = ChrW(s)
End Function
[/vba]
Она возвращает коды символов и символы Юнико́да

Автор - SLAVICK
Дата добавления - 21.08.2015 в 14:44
pabchek Дата: Пятница, 21.08.2015, 14:59 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 931
Репутация: 218 ±
Замечаний: 0% ±

Excel 2007
но если он не входит в таблицу, почему он отображается в екселе?

И 214 код (по Вашей формуле) из той же таблицы ASCII 214 = ╓


"Учиться, учиться и еще раз учиться!"
WM: R399923528092


Сообщение отредактировал pabchek - Пятница, 21.08.2015, 15:01
 
Ответить
Сообщениено если он не входит в таблицу, почему он отображается в екселе?

И 214 код (по Вашей формуле) из той же таблицы ASCII 214 = ╓

Автор - pabchek
Дата добавления - 21.08.2015 в 14:59
SLAVICK Дата: Пятница, 21.08.2015, 15:06 | Сообщение № 4
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
3-й символ не входит в стандартную таблицу (ASCII) символов - там их 256. - см. ссылку.
В расширенной таблице (Unicode) символов их 65536 %) :)
И 214 код (по Вашей формуле) из той же таблицы ASCII 214 =

Потому, что в моих фунциях коды символов не ASCII а Unicode yes

И Вы читайте статью внимательней:
Цитата
По этой причине существуют различные варианты кодировки ASCII, включающие знаки для разных языков.

Для русского - 214-й символ = "ц" ;) , а в статье:
Цитата
таблица ASCII, называемая также ISO 8859-1, используется во многих программах для языков, распространенных в Северной Америке, Западной Европе, Австралии и Африке.


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Пятница, 21.08.2015, 15:20
 
Ответить
Сообщение3-й символ не входит в стандартную таблицу (ASCII) символов - там их 256. - см. ссылку.
В расширенной таблице (Unicode) символов их 65536 %) :)
И 214 код (по Вашей формуле) из той же таблицы ASCII 214 =

Потому, что в моих фунциях коды символов не ASCII а Unicode yes

И Вы читайте статью внимательней:
Цитата
По этой причине существуют различные варианты кодировки ASCII, включающие знаки для разных языков.

Для русского - 214-й символ = "ц" ;) , а в статье:
Цитата
таблица ASCII, называемая также ISO 8859-1, используется во многих программах для языков, распространенных в Северной Америке, Западной Европе, Австралии и Африке.

Автор - SLAVICK
Дата добавления - 21.08.2015 в 15:06
pabchek Дата: Пятница, 21.08.2015, 17:06 | Сообщение № 5
Группа: Проверенные
Ранг: Ветеран
Сообщений: 931
Репутация: 218 ±
Замечаний: 0% ±

Excel 2007
Нда, не сразу сообразил, что 214=00D6. И сразу все стало на свои места :)
Таки спасибо!
И... так понимаю, формулами вывести юникодовские символы... можно?


"Учиться, учиться и еще раз учиться!"
WM: R399923528092
 
Ответить
СообщениеНда, не сразу сообразил, что 214=00D6. И сразу все стало на свои места :)
Таки спасибо!
И... так понимаю, формулами вывести юникодовские символы... можно?

Автор - pabchek
Дата добавления - 21.08.2015 в 17:06
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Формулы КОДСИМВ() и СИМВОЛ() дают разные результаты (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!