|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
05.12.2020, 16:13 | #1 |
Пользователь
Регистрация: 16.05.2009
Сообщений: 64
|
Определение типа данных в ячейке с помощью VBA
Здравствуйте!
Постоянно испытываю трудности с типами данных в своих таблицах. И вот опять. Есть таблица, где в столбце встречаются числа записанные как текст и как число. Пытался узнать тип с помощью функции IsNumeric. Есть ячейка с "1 700,000" (текстом) и ячейка с 1700 (число). Записываю значение ячейки в переменную с помощью функции Cells Проверяю эту переменную функцией IsNumeric. В обоих случаях True. Как так то? Забиваю в ячейку "абвгд", проверяю - всё норм - IsNumeric выдаёт False. Свою проблему решил путём умножения переменной на единицу. Но осадочек остался. Вопрос. Как же надёжно определить с помощью VBA число или текст, если в ячейке только цифры? У меня Excel 2003. Форум покурил немного, не нашёл подобной темы. Извините, если баяню. |
05.12.2020, 16:28 | #2 |
2 the Nation Glory
Старожил
Регистрация: 27.05.2014
Сообщений: 3,289
|
гугла курили?
https://www.google.com/search?client...+get+cell+type Вот как вариант попробуйте может на вашем мамонте сработает Код:
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы. |
05.12.2020, 19:37 | #3 |
Пользователь
Регистрация: 16.05.2009
Сообщений: 64
|
Спасибо.
Я надеялся, что есть функция, которая сразу выдаст тип данных в ячейке. Этот алгоритм понятен, только вот у меня, как я выше написал, странно работает IsNumeric. Она выдаёт True, когда в ячейке "1 700,000". А это текст на самом деле. ПС. По одной из ссылок вашего запроса в гугле нашёл функцию TypeName. Похоже, это то что надо. ППС. Проверил. Работает. Правда умножение на единицу гораздо проще, чем выяснение типа, а затем телодвижения по изъятию пробелов и превращению в число. Но зато на душе стало спокойнее. )) Последний раз редактировалось НеВа6464; 05.12.2020 в 19:53. |
05.12.2020, 19:45 | #4 |
2 the Nation Glory
Старожил
Регистрация: 27.05.2014
Сообщений: 3,289
|
Это вы, а не ексель, для себя, по каким-то своим критериям, решили что "1 700,00" текст, а не формат #,##0.00 отображения числа
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы. Последний раз редактировалось Aleksandr H.; 05.12.2020 в 19:49. |
06.12.2020, 10:02 | #5 | |
Пользователь
Регистрация: 16.05.2009
Сообщений: 64
|
Цитата:
Отличить текст от числа, на самом деле, сможет даже начинающий, с изумлением увидев, что результат вычисления с ячейкой приводит к ошибке. Или по выравниванию. Число, по умолчанию, прижимается к правому краю ячейки, как у вас в примере, а текст к левому краю, что сразу же бросается в глаза. Стал бы я вообще париться с типами, если бы эти мои "1 700,000" были числом. Но функция IsNumeric действительно ведёт себя странно. |
|
06.12.2020, 14:42 | #6 |
2 the Nation Glory
Старожил
Регистрация: 27.05.2014
Сообщений: 3,289
|
В вас задача перевести все данные из столбца в числа? Старый метод иногда здорово помогает-выделить исходный столбец;выбрать формат ячеек "числовой"; выбрать "текст по столбцам"; ничего не меняя, нажать ок.
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы. |
09.12.2020, 07:50 | #7 |
Пользователь
Регистрация: 30.07.2018
Сообщений: 19
|
а точно ли там текст?
А не формат ячейки? У меня, например, формат числа 1700 |
09.12.2020, 09:09 | #8 | |
2 the Nation Glory
Старожил
Регистрация: 27.05.2014
Сообщений: 3,289
|
alex777555 вы не знаете как фактически оно отображается в ТС, он указал что он(ТС, не ексель) визуально число от текста различает таким способом,
Цитата:
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы. |
|
11.12.2020, 10:55 | #9 | |
Пользователь
Регистрация: 30.07.2018
Сообщений: 19
|
Цитата:
По тому, что при вставке или вводе 1 700,000 в ячейку с общим форматом ексел сам переводит формат в числовой. Вставить как текст можно только в ячейку с текстовым форматом но тогда можно определять по формату ячейки NumberFormat |
|
11.12.2020, 23:10 | #10 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
alex777555
откройте файла, посмотрите на А1, А2 чем NumberFormat поможет вам определить что там числа 7 и 12? чем???
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как увязать тип данных в ячейке Эксел с типом данных в переменной VBA? | НеВа6464 | Microsoft Office Excel | 16 | 25.11.2019 09:30 |
Запись данных с помощью макроса VBA в Excel | Марина11 | Microsoft Office Excel | 2 | 04.10.2017 22:24 |
Просмотр данных с помощью VBA | Lyubov1990 | Microsoft Office Excel | 0 | 10.06.2009 16:13 |
ПРОБЛЕМА с заменой символов в ячейке с помощью кода VBA | Maxx | Microsoft Office Excel | 5 | 11.11.2008 16:42 |
Сверка данных с помощью VBA | mal001 | Microsoft Office Excel | 2 | 06.08.2008 14:39 |