Это не основной c вопрос .
Есть два файла Excel, созданные из двух разных систем (я не могу поделиться ими здесь).
Я сравниваю два столбца, которые содержат десятичные значения от 0,001 до 0,1.
Данные загружаются в массивы и сравниваются от ввода к записи с:
If arrayA(row, col) <> arrayB(row, col) then
' we know it's a discrepancy
End If
Это, однако, возвращает это для пример 0,035 не равно 0,035.
Я тестировал несколько вещей:
Я создал две НОВЫЕ РАБОЧИЕ ТНИКИ, скопировал каждый набор данных и вставил в качестве значений в новые книги. Это не помогло, снова равные значения распознаются как несоответствия.
Я попытался выбрать набор данных и использовать «Очистить> Все форматирование», однако это также не сработало.
Я также попытался выбрать оба столбца и изменить тип данных на тот же в обоих столбцах «Число, Общие, Текст» - происходило то же самое.
Теперь удивительно, что сработало :
Если бы я создал «вспомогательный столбец» и просто умножил значения на 100, а затем скопировал их, вставил как значения для удаления формул. Затем я разделил их в другом вспомогательном столбце на 100, скопировал и вставил как значения для удаления формул. Затем вставил эти значения обратно в исходный столбец, который сравнивался - НА ЭТОЙ РАЗ КОД определил, что 0,035 было равно 0,035, а 0,3 было равно 0,3 et c. Итак, это сработало.
Я понимаю, что использование просто «<>» непосредственно для двух записей сравнивает их с использованием двоичного метода (наиболее точного), однако у меня не было идей, почему это
Можно подумать, что если вы скопируете и вставите как значения ИЛИ очистите форматирование из обоих наборов данных, он должен работать, но это не так.
Я был бы признателен за любые идеи.
Спасибо!