Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.03.2009, 11:59   #1
Дятел
 
Регистрация: 31.03.2009
Сообщений: 9
Вопрос Проблема с нахождением максимума с помощью Excel-функции.

Словил "клин" в простой ситуации, в поиске не нашел подобного.
Помогите советом начинающему, плз!
Имеем в редакторе VBA(Excel) что-то типа:

Sub R()
Dim x5 As Single, x14 As Single, x15 As Single, x23 As Single
x15 = 17.48
x14 = 17.4
x23 = 17.4
x5 = 34.88
If x5 <> Application.WorksheetFunction.Max(x 15, x23) + x14 Then
MsgBox ("Ошибка")
End If
End Sub

условие не желает выполняться, хотя вроде все очевидно. Есть предположение, что с форматом чисел надо колдовать, но как?
Дятел вне форума Ответить с цитированием
Старый 31.03.2009, 12:12   #2
mchip
Форумчанин
 
Регистрация: 24.06.2008
Сообщений: 516
По умолчанию

x5=34.88
Max(x15, x23) + x14 =34,8799991607666

а это разные вещи
Можно сделать все! Было бы время, да деньги...
mchip вне форума Ответить с цитированием
Старый 31.03.2009, 12:39   #3
slan
Форумчанин
 
Аватар для slan
 
Регистрация: 30.01.2008
Сообщений: 314
По умолчанию

как нас учили - при операциях с вещественными числами не может быть сравнений типа = или <> , может быть только определение точности результата, т.е > dx или <dx, где dx - точность (например, 0,0001 для вашего случая)
slan вне форума Ответить с цитированием
Старый 31.03.2009, 13:28   #4
Дятел
 
Регистрация: 31.03.2009
Сообщений: 9
По умолчанию

Числовые значения переменных привел для минимизации кода. В реальности функция работает со ссылками на значения в ячейках. Причем более "тяжелые" , на мой взгяд, для понимания VBA экселевские функции (например VLookup) отрабатывают вполне корректно. "Странность" поведения замечена именно на МАХ! Неужели нет более изящного решения, или это неисправимая ошибка редактора?
P.S. Конечно, можно применить Round, но хотелось бы понять, почему VBA в операциях сравнения "корёжит" сами значения, он что, конвертирует в понятный для себя вид дроби туда-сюда?

Последний раз редактировалось Дятел; 31.03.2009 в 13:47.
Дятел вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача с помощью функции switch по C++ Many man Помощь студентам 9 02.09.2017 10:35
Вычисление функции с помощью ряда Тейлора Wast Общие вопросы C/C++ 6 25.12.2011 19:42
Задачка Excel с помощью функции ЕСЛИ,помогите пожалуйста. Tsss Microsoft Office Excel 6 19.04.2009 15:05
Вывести динамический масив с помощью функции Gavreil Общие вопросы C/C++ 2 17.12.2008 21:27
Рассчитать полином с помощью функции. Паскаль. Nexx Помощь студентам 8 04.12.2007 22:19