Сравнение десятичных значений Excel VBA

Я пытаюсь сравнить десятичные значения в Excel VBA и удалять строки, соответствующие критериям. Это был мой оригинальный код, и он пропустил много строк.

For Each i In WSData.Range("A7", WSData.Range("A7").End(xlDown)).Cells If i.Offset(0, 3).Value >= 98 Then i.EntireRow.Delete End If Next 

Значения в электронной таблице являются десятичными значениями только с знаком%.

введите описание изображения здесь

Я попытался «> 97.99», потому что Excel имеет некоторые проблемы с сопоставлением с плавающей запятой, но он по-прежнему не точно сравнивает.

Вот что он показывает после использования Selection.Value. введите описание изображения здесь

введите описание изображения здесь

Проценты десятичные, обозначенные целыми числами. Например, 100,00% хранится как 1 и 98,01% хранится как .9801.

Для этого вам необходимо настроить порог:

 For Each i In WSData.Range("A7", WSData.Range("A7").End(xlDown)).Cells If i.Offset(0, 3).Value >= .98 Then i.EntireRow.Delete End If Next 

Вторая проблема заключается в том, что при удалении строк лучше всего перебирать назад. В противном случае это может пропустить несколько строк, потому что, когда каждая строка удаляется, она перемещается вверх, а затем следующая итерация пропускает следующую строку.

Измените i с диапазона на длинный и используйте это:

 For i = WSData.Range("A7").End(xlDown).row to 7 Step -1 If WSData.Cells(i,3).Value >= .98 Then Row(i).Delete End If Next 

Изменить: поскольку в нем отображается пользовательская маска в числовом формате, который заставляет числа выглядеть как проценты, попробуйте это:

 For i = WSData.Range("A7").End(xlDown).row to 7 Step -1 If WSData.Cells(i,3).Value >= 98 Then Row(i).Delete End If Next 

Если это сработает, тогда ваша главная проблема заключалась в том, что вы смотрели на столбец D. Смещение является аддитивным. Поэтому, когда вы использовали .offset(0,3) он перемещал три столбца из столбца A. 1 + 3 равно 4.

  • Сохранить как .csv правильный десятичный разделитель
  • Несмотря на то, что цена обновления продукта с использованием позиции десятичного разряда Excel изменяется автоматически в приложении asp.net
  • Excel не отображает нулевое значение после открытия экспортированного CSV-файла
  • Формула Excel всегда включает 2 десятичных значения справа
  • Храните десятичные знаки при открытии CSV
  • Изменение десятичного разделителя с формулой
  • Ограничение результатов SQL до 2 десятичных мест в Excel
  • Как изменить формат десятичного числа в EpPlus?
  • Выражение формулы Excel в Java (десятичная по времени интерпретация)
  • Interesting Posts

    В excel: как определить, будет ли 01/01/1900 распечатать пустую строку, иначе показать дату

    Проверка дубликатов Excel VBA

    Формула для расчета зарплаты через год?

    Добавление цвета через макрос в excel

    Excel 2007 VBA Масштабирование (без использования select?)

    Импортируя CSV-файл Excel в RStudio и преобразуя коэффициенты в числовые, я получаю либо NA, либо новые данные; попытался исключить запятые, но все равно получить НС

    Excel VBA Изменение высоты и ширины ListBox программно

    Обработка CDBException (ошибка) в C ++ (VS2010, MFC, Excel / ODBC)

    VBS для ping группы серверов, но не ping имя группы

    Запрос Excel VBA Getexchangeuser.Getexchangeusermanager

    Excel 2010 – изменение источника данных сводной таблицы от внешнего к рабочему листу в рабочей книге

    Как использовать диапазон столбцов, найденных с использованием массива в качестве входных данных, и сравнить диапазон с числом, чтобы получить результат как «истинный» или «ложный» в другом столбце?

    Пользовательская форма VBA не заполняется при первом открытии, но работает во второй раз

    Манипулирование переменными с помощью excel

    Как читать из файла с разделителями табуляции на C # в asp .net веб-приложении

    Давайте будем гением компьютера.