1

Тема: Проверка двух условий поля IF

Помогите, пожалуйста: вот поле:
{ IF { = AND ( { COMPARE { Список1 } = "да" }, { COMPARE { Список2 } = "да" } ) } = 1 " WIN " " FAIL "}

Список 1 и список 2 - имена закладок выпадающих списков. Из списков можно выбрать да или нет. Надо, что бы в поле произошла проверка, что если в списке 1 и списке 2 выбрано да, тогда WIN иначе FAIL. Что не правильно сделал? Должно ведь работать. Он все время FAIL выводит.

Так пашет:
{ IF { Список1 } = "да" " WIN " " FAIL "}, а вот при сравнении 2-ух списков никак не могу сделать.

Пробовал:
{ IF { = AND ( { COMPARE { MERGEFIELD Список1 } = "да" }, { COMPARE { MERGEFIELD Список2 } = "да" } ) } = 1 " WIN " " FAIL "} - тоже не пашет.

2

Re: Проверка двух условий поля IF

Так работает:
{ IF { IF Список1= "да" "1" } = {IF Список2 = "да" "1" } "WIN" "FAIL" }

Учтите, что проверка чувствительна к регистру букв, может пробельчик лишний затесался.

А ваше поле правильное, если у вас английская Windows. Синтаксис по умолчанию в английской - AND(x,y), в русской - AND(x;y)

Макросы под заказ и готовый пакет - mtdmacro.ru

3

Re: Проверка двух условий поля IF

А может сравнивать только 2 значения что ли? Почему вот так не пашет:

{ IF { = OR ( { COMPARE { Список1 } = "да" }; { COMPARE { Список2 } = "да" }; { COMPARE { Список3 } = "да" } ) } = 1 " WIN " " FAIL "}

Если здесь сделать 2 списка то пашет, а с 3-мя не хочет.

4

Re: Проверка двух условий поля IF

Синтаксис OR такой же, как и AND. Цитирую справку Word:
"...
Поле = (Формула) может использовать значения, возвращенные перечисленными ниже функциями. Для функций с пустыми скобками допустимо любое число аргументов, разделенных точками с запятыми (;) или запятыми (,), в зависимости от того, какие региональные параметры выбраны на панели управления Microsoft Windows. Аргументы могут быть числами, формулами или именами закладок. Ссылки на ячейки таблицы допустимы в качестве аргументов следующих функций: AVERAGE(), COUNT(), MAX(), MIN(), PRODUCT() и SUM().

AND(x,y)
Возвращает значение 1, если оба логических выражения x и y истинны, или 0 (ноль), если хотя бы одно из них ложно.
NOT(x)
Возвращает значение 0 (ложь), если логическое выражение x истинно или 1 (истина), если оно ложно.
OR(x,y)
Возвращает значение 1 (истина), если хотя бы одно из двух логических выражений x и y истинно, или 0 (ложь), если оба ложны.
..."

Макросы под заказ и готовый пакет - mtdmacro.ru

5

Re: Проверка двух условий поля IF

Во 2-ом сообщении ветки я не зря привел пример, где вместо AND использован IF.  В отличии от функции AND, проверка IF не зависит от региональных настроек Windows. Я бы старался избавиться от этой зависимости, т.е. заменить AND, OR и т.п. на IF.

Макросы под заказ и готовый пакет - mtdmacro.ru

6

Re: Проверка двух условий поля IF

Да, но в Ваш пример справедлив для AND, а если надо OR да еще сравнить 3 элемента?

7

Re: Проверка двух условий поля IF

Route пишет:

...надо OR да еще сравнить 3 элемента...

С помощью поля IF можно реализовать любую проверку. OR для трех переменных:

{ IF { QUOTE "{ IF Список1 = "да" "1" }{IF Список2 = "да" "1" }{IF Список3 = "да" "1" }" } <> "" "WIN" "FAIL" }
Макросы под заказ и готовый пакет - mtdmacro.ru