Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 30.11.2014
Сообщений: 33
1

Искажение данных VBA при передаче в ячейку листа excel

25.03.2017, 14:04. Показов 2582. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день столкнулся с проблемой.
Считываю данные из текстового файла в массив
После передачи данных из массива на лист в ячейке данные искажены

Помогите разобраться в чем ошибка.
Запускаю процедуру open_incl_point_file
Выбираю текстовый файл: i_447 Зенит 10_00.txt

в Итоге в ячейке получается вместо 0,06 показывает 0,0599999986588955
Вложения
Тип файла: txt i_447 Зенит 10_00.txt (14.9 Кб, 9 просмотров)
Тип файла: xls Точечный инклинометр1.xls (62.0 Кб, 9 просмотров)
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.03.2017, 14:04
Ответы с готовыми решениями:

Excel vba userform перенести данные в ячейку листа
Добрый день, как занести в первую пустую ячейку допустим столбцов С и D, так чтобы если первая пустая С109 вносилось в неё, потом в D110,...

Excel vba userform перенести данные в активную ячейку листа
Добрый день, подскажите как из userform из TextBox2 перенести данные в активную ячейку ?

Искажение данных при передаче через TCP соединение. Winsock
Здравствуйте, у меня клиент-сервер приложение, и при передаче относительно большого числа, возникает его искажение. Хотя при передаче...

13
4 / 4 / 1
Регистрация: 24.06.2013
Сообщений: 62
25.03.2017, 14:42 2
задай формат при выводе в ячейку или формат самой ячейки

Добавлено через 7 минут
Visual Basic
1
2
G = 0.5468
ThisWorkbook.Sheets("Лист1").Cells(1, 1).Value = Format(G, "#0.00")
0
0 / 0 / 0
Регистрация: 30.11.2014
Сообщений: 33
25.03.2017, 14:53  [ТС] 3
самое интересное что использовал специально промежуточные переменные, у VBA бывают глюки с преобразованием типов. Промежуточная переменная содержит правильное число к примеру 10,02 а в ячейку пишется 10,0200004577636
0
4 / 4 / 1
Регистрация: 24.06.2013
Сообщений: 62
25.03.2017, 14:56 4
Цитата Сообщение от Newzero Посмотреть сообщение
При использовании Format(tmp_data, "###.00") возвращается в формате текст, а если после этого использовать CSng один черт искажается
Тогда так
Visual Basic
1
2
G = 0.5468
ThisWorkbook.Sheets("Лист3").Cells(1, 2).Value = Round(G, 2)
0
0 / 0 / 0
Регистрация: 30.11.2014
Сообщений: 33
25.03.2017, 14:59  [ТС] 5
Не помогает проверил
Worksheets("data").Cells(index1 + 1, 2).Value = Round(CSng(Format(tmp_data, "###.00")), 2)
0
4 / 4 / 1
Регистрация: 24.06.2013
Сообщений: 62
25.03.2017, 14:59 6
Цитата Сообщение от Newzero Посмотреть сообщение
Не помогает проверил
Worksheets("data").Cells(index1 + 1, 2).Value = Round(CSng(Format(tmp_data, "###.00")), 2)

Без Format, только округление

Visual Basic
1
Worksheets("data").Cells(index1 + 1, 2).Value = Round(tmp_data, 2)
0
0 / 0 / 0
Регистрация: 30.11.2014
Сообщений: 33
25.03.2017, 15:10  [ТС] 7
А если просто как текст загоняешь правильно вносит, но тогда придется еще макрос на преобразования формата данных в ячейке
Самое интересное что если присваиваю переменной значение к примеру 10,2 и загоняю в ячейку то вводится правильно. А если 10,22 то выводит с искажением

Добавлено через 2 минуты
Проверил только round тоже самое

Может какие настройки типа Option есть на этот счет?
0
0 / 0 / 0
Регистрация: 30.11.2014
Сообщений: 33
25.03.2017, 15:16  [ТС] 8
Скрин скинул как выглядит
Миниатюры
Искажение данных VBA при передаче в ячейку листа excel  
0
4 / 4 / 1
Регистрация: 24.06.2013
Сообщений: 62
25.03.2017, 16:10 9
Лучший ответ Сообщение было отмечено Newzero как решение

Решение

Цитата Сообщение от Newzero Посмотреть сообщение
Cкрин скинул как выглядит
держите, Currency сначала в Double, потом округляем:

Visual Basic
1
Worksheets("data").Cells(index1 + 1, 2) = Round(CDbl(tmp(index1)), 2) 'CSng(tmp_data)
1
0 / 0 / 0
Регистрация: 30.11.2014
Сообщений: 33
25.03.2017, 16:49  [ТС] 10
Заработало, а изза чего это может быть?
Мне просто по работе отчеты чтобы ручками не забивать решил в excel макрос реализовать, не охото на чистом VB либо Делфи писать прогу.
0
4 / 4 / 1
Регистрация: 24.06.2013
Сообщений: 62
25.03.2017, 17:06 11
Цитата Сообщение от Newzero Посмотреть сообщение
Заработало, а изза чего это может быть?
ну как я понял Currency не мог округляться... не совсем числовой тип видимо...
0
0 / 0 / 0
Регистрация: 30.11.2014
Сообщений: 33
25.03.2017, 17:50  [ТС] 12
Я с синглом пробовал тоже, может проблема глубже
0
4 / 4 / 1
Регистрация: 24.06.2013
Сообщений: 62
25.03.2017, 17:52 13
Цитата Сообщение от Newzero Посмотреть сообщение
Я с синглом пробовал тоже, может проблема глубже
С синглом и с округлением или просто с синглом?
0
0 / 0 / 0
Регистрация: 30.11.2014
Сообщений: 33
25.03.2017, 19:13  [ТС] 14
С синглом и округлением и просто с синглом одинаково криво

А вот с Double, весьма интересная картина получается
так: CDbl(Format(tmp(index1), "###.000")) - нормально работает, даже без ROUND
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.03.2017, 19:13
Помогаю со студенческими работами здесь

VBA при каждом создании нового листа в Excel окрашивать ярлык
как создать по средствам VBA процедуру, которая будет при каждом создании нового листа в Excel будет перекрашивать ярлык созданного...

Перенос комментариев(рецензий) в ячейку листа excel
Добрый день! Имеется excel файл, Столкнулся с необходимостью перемещать комментарии(рецензии) в ячейки самих таблиц В...

Как в ячейку листа Excel'я вставить элемент управления?
Подскажите, как в ячейку листа Excel'я вставить элемент управления (ComboBox)

VBA Excel печать листа
На листе ActiveSheet определены сквозные строки "$1:$2" для печати на каждой странице (ActiveSheet.PageSetup.PrintTitleRows =...

Excel VBA: вставка символов в ячейку
Всем добрый день! Если кто может, помогите. Нужен макрос для Excel, который вставлял бы после каждого третьего символа ячейки знак...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
Лучшие практики оптимизации Docker Image
Mr. Docker 13.03.2025
Размер Docker-образа влияет на множество аспектов работы с контейнерами. Чем больше образ, тем дольше его загрузка в реестр и выгрузка из него. Для команд разработки, работающих с CI/ CD пайплайнами,. . .
Вопросы на собеседовании по Docker
Mr. Docker 13.03.2025
Ты сидишь напротив технического специалиста, и вдруг звучит вопрос про Docker Swarm или многоэтапные сборки. Пот на лбу? Не переживай, после этой статьи ты будешь готов ко всему! Эта статья будет. . .
Поиск текста в сносках : замена дефиса на тире или тире на дефис...
РоΜа 13.03.2025
Нужно было найти текст в сносках и заменить. Почему-то метод селекшн не сработал. . . пришлось гуглить. найденный на форумвба код пришлось править. Смысл - заменяет в сносках дефисы и тире на нужные. . . .
Real PATH definitions in bash scripts
jigi33 13.03.2025
Как поймать путь и путь к директории относительно запускаемого файла в BASH 1. поймать путь через вывод $(pwd) 2. более правильно - на основе realpath (см. скриншот)
Django или Flask: что выбрать для веб-разработки на Python
py-thonny 13.03.2025
Django – это высокоуровневый фреймворк, который придерживается философии "всё включено". Он предоставляет разработчику готовые решения для большинства типичных задач веб-разработки: от аутентификации. . .
Непрерывное развертывание в Java с Kubernetes
Javaican 13.03.2025
Чем так привлекателен Kubernetes для развертывания Java-приложений? Этот оркестратор контейнеров позволяет автоматизировать развертывание, масштабирование и управление контейнеризированными. . .
Предотвращение XSS, CSRF и SQL-инъекций в JavaScript
run.dev 13.03.2025
JavaScript занимает первые позиции среди языков веб-разработки, но его распространенность делает его привлекательной целью для злоумышленников. Межсайтовый скриптинг (XSS), межсайтовая подделка. . .
PHP 8: JIT-компиляция и улучшение производительно­сти
Jason-Webb 13.03.2025
PHP никогда не славился своей скоростью. Многие сталкивались с проблемами производительности при работе со сложными вычислениями или обработкой больших объемов данных. Традиционная модель выполнения. . .
Сериализация данных с Apache Avro в Kafka
Javaican 12.03.2025
Apache Kafka стала одним из ключевых решений для работы с большими потоками данных. Однако с ростом объемов передаваемых данных возникает проблема: как эффективно сериализовать и десериализовать. . .
Создание потребителей Kafka с помощью Reactor Kafka
Javaican 12.03.2025
Reactor Kafka — это библиотека, объединяющая Apache Kafka с реактивным программированием на базе Project Reactor. Такое сочетание позволяет строить неблокирующие, асинхронные приложения с контролем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru