Excel VBA: Фильтрация данных в Excel

Автор Radjah, 16 сентября 2016, 20:58

Radjah

Есть макрос для фильтрация данных, а он находит почему-то только 40 совпадений. Где у меня могла затаиться ошибка? Заранее благодарю за оказанную помощь.
P.s. на первом фото условия для поиска, на втором результат фильтрации.

[вложение удалено администратором]

Администратор

Напишите так:
Лист2 - номер строки, по которой должны быть данные, но их нет
Лист1 - номер строки, которая должна отображаться, а она скрыта

Достаточно написать про одну строку, может быть по одной строке будет найдена ошибка.

Radjah

Лист2 - значение 153.2 (строка 42)
Лист1 - должна быть строка 3832, но она скрыта

Администратор

На листе 2, в ячейке "A42" число 153,200000000001. На конце есть единица. А на листе 1 число 153,2.
Чтобы увидеть это число (из-за формулы его не видно), скопируйте ячейку "A42" - вкладка "Главная" - Буфер обмена - кнопка-стрелка "Вставить" - Специальная вставка... - поставьте кружок "Значения". В строке формул вы увидите это число.

Поэтому логично, что фильтр не находит нужные данные.

Эта проблема связана с тем, что в экселе используется плохая система для подсчёта, основанная на стандарте IEEE 754. В интернете попробуйте поискать про эксель и этот стандарт - периодически у людей появляются проблемы с расчётами из-за этого стандарта.


Решение проблемы

Округляйте числа. В экселе два способа округления:
1) используйте функции для округления:
=ОКРУГЛ(A41+0,08;2)
2) Файл - Параметры - Дополнительно - раздел "При пересчете этой книги" - поставьте галочку "Задать указанную точность". И ещё на листе 2, в столбце A задайте формат ячеек "Числовой" с двумя знаками после запятой.
Этот параметр применяется ко всей книге и фактически и безвозвратно обрезает числа.


Radjah

Спасибо большое за ответ, вы меня очень выручили!