Почему ВБ не вимдит числа типа 0,11
Модератор: Naeel Maqsudov
0,1 работает, а 0,11 уже нет почему
Sub ()
Dim r As Double
For r = 0.1 To 0.2
If ActiveSheet.Cells(4, 3).Value() = r Then ActiveSheet.Cells(4, 4).Value() = "ok"
Next r
End Sub
Sub ()
Dim r As Double
For r = 0.1 To 0.2
If ActiveSheet.Cells(4, 3).Value() = r Then ActiveSheet.Cells(4, 4).Value() = "ok"
Next r
End Sub
- Игорь Акопян
- Сообщения: 1440
- Зарегистрирован: 13 окт 2004, 17:11
- Откуда: СПБ
- Контактная информация:
Во-первых. Если в цикле не указан Step - то он равен 1
Во-вторых. Смысл Вашего цикла от меня ускользает
Написать ОК в соседней ячейке, если значение лежит в диапазоне? Или чего? Разъясните, пожалуйста.
Во-вторых. Смысл Вашего цикла от меня ускользает

Написать ОК в соседней ячейке, если значение лежит в диапазоне? Или чего? Разъясните, пожалуйста.

Очень просто идет сравнение
если значение ячейки А1 допустим 2 то в В1 например пишет "1 бал"
если значение ячейки А1 допустим 3 то в В1 например пишет "2 бал"
и тд.
это не цикл, это в екселе присуждаеться по значению ранг клиента
если значение ячейки А1 допустим 2 то в В1 например пишет "1 бал"
если значение ячейки А1 допустим 3 то в В1 например пишет "2 бал"
и тд.
это не цикл, это в екселе присуждаеться по значению ранг клиента
- Игорь Акопян
- Сообщения: 1440
- Зарегистрирован: 13 окт 2004, 17:11
- Откуда: СПБ
- Контактная информация:
если это касается только одной ячейки (что вряд ли) я бы забил формулу =ЕСЛИ(...)
если же это условие надо проверить для диапазона ячеек, то я бы делал цикл по диапазону и в нём уже проверял условие на значение
если же это условие надо проверить для диапазона ячеек, то я бы делал цикл по диапазону и в нём уже проверял условие на значение

Дело в том что проверка в одной ячейке идет по куче критериев, и надо сделать в ВБ
- Игорь Акопян
- Сообщения: 1440
- Зарегистрирован: 13 окт 2004, 17:11
- Откуда: СПБ
- Контактная информация:
Парочку критериев в студию - придумаем чего-нить 


- Oscar
- Сообщения: 963
- Зарегистрирован: 29 май 2004, 13:44
- Откуда: Мюнхен (рожден в Киеве)
- Контактная информация:
VB не знаю, случайно проходил мимо, а потому ногами не пинать.
так не пойдёт?
Код: Выделить всё
Sub ()
If ActiveSheet.Cells(4, 3).Value() >= 0.1 And ActiveSheet.Cells(4, 3).Value() <= 0.2 Then ActiveSheet.Cells(4, 4).Value() = "ok"
End Sub
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Ну, про STEP в операторе FOR Вам уже сказали. Это, видимо, было главной проблемой.0,1 работает, а 0,11 уже нет почему
Sub ()
Dim r As Double
For r = 0.1 To 0.2
If ActiveSheet.Cells(4, 3).Value() = r Then ActiveSheet.Cells(4, 4).Value() = "ok"
Next r
End Sub
Добавлю еще вот что. Сравнение значений типа Double и Single оператором "=" - это грубая ошибка. Допустим в ячейке которую Вы сравниваете с 0.1 находится формула. Наверняка она даст что-то типа 0.10000000000001 или 0.09999999999999 (ошибка округления в 15-ом значащем разряде). Это число не равно 0.1 и сравнение будет неуспешным.
Ну и напоследок хочу согласиться с Игорем Акопяном, по поводу функции ЕСЛИ. Legachoff, давайте сюда Ваши критерии мы их в 2 счета
