Как правильно прописать строку в макросе?
Условия: если пол (pol) равен м и возраст (v1) больше 18, то "мужчины"; если пол (pol) равен ж и возраст (v1) больше 18, то "женщины".
Строка с половиной условия (если пол (pol) равен м) выглядела так:
GrVozr2 = IIf(pol = "м", "мужчины", pol & "," & Str(v1) & " -" & Str(v2 - 1) & " лет")
А как прописать, чтобы выполнялось условие полностью (если пол (pol) равен м и возраст (v1) больше 18, то "мужчины")? Это нужно для соревнований, и если возраст меньше 18 то категория уже другая (юниоры, юноши, мальчики).
Функция IIf
Модератор: Naeel Maqsudov
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Если это макрос, то вместо извращённых формул пишите обычные IF...ELSE IF...ELSE или SELECT CASE
IIf была придумана не для макросов, а чтобы простую логику можно было реализовать в одной формуле.
IIf была придумана не для макросов, а чтобы простую логику можно было реализовать в одной формуле.
Да, это макрос...
Знать бы ещё как это делается... Пропишите, если вас это не затруднит...то вместо извращённых формул пишите обычные IF...ELSE IF...ELSE или SELECT CASE
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Код: Выделить всё
select case v1
case Is > 18
if pol="м" then GrVozr2 = "мужчиы" else GrVozr2 = "женщины"
case Is > 10 'поставил 10 произвольно, так как не была указана вторая раница
if pol="м" then GrVozr2 = "юноши" else GrVozr2 = "девушки"
case else
if pol="м" then GrVozr2 = "мальчики" else GrVozr2 = "девочки"
end select
Однако, если это MS Excel, то можно написать длинную-длинную формулу, и вообще обойтись безо всяких макросов.
Условия объединяются функциями И(х,у) ИЛИ(х,у) НЕ(х)
Спасибо! Работает!
А как прописать если возраст от 11 до 12 лет?
А как прописать если возраст от 11 до 12 лет?
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
В case выполняется только одна секция — первая, которая подойдёт. Поэтому, в условиях достаточно проверять только 1 границу, а не вхождение в диапазон
Код: Выделить всё
case is > 18: ' x>18
case is > 12: ' 13>x>=18
case is > 10: ' 10>x>=12
case else : ' x<=10
Понял. Спасибо! Я почти догадался, только начинал с меньшего числа...
case is > 10
case is > 12
case is > 14
case is > 16
case is > 18
...и наверное поэтому не получилось.
case is > 10
case is > 12
case is > 14
case is > 16
case is > 18
...и наверное поэтому не получилось.