1

Что я хочу сделать, это:

{ IF v1 = 0 OR v2 = 0 "Lorem Ipsum.." }

Как написать OR в синтаксисе Word слияния?

Я особенно прошу Word 2013 - я думаю, что синтаксис изменился в 2013 году.

2 ответа2

2

Если v1, v2 являются полями MERGE, в общем случае вам нужны {MERGEFIELD v1} и {MERGEFIELD v2}. Затем вы можете сделать ИЛИ, используя такую конструкцию:

{ IF { =OR({ COMPARE { MERGEFIELD v1 } = 0 },{ COMPARE { MERGEFIELD v2 = 0 }) } = 0 "Lorem Ipsum.." }

(Как обычно, все {} должны быть специальными парами фигурных скобок кода поля, которые вы можете вставить в Windows Word, используя ctrl-F9.

Или для коротких текстовых результатов вы можете использовать числовой переключатель изображения для получения правильного результата, например,

{ =OR({ COMPARE { MERGEFIELD v1 } = 0 },{ COMPARE { MERGEFIELD v2 = 0 }) }) \#"'';'';'Lorem Ipsum..'" }

Для большего количества сравнений, вам нужно вложить OR

В этом случае вы также можете сделать такие вещи, как

{ IF { =ABS({ MERGEFIELD v1 })+ABS({ MERGEFIELD v2 }) } = 0 "Lorem Ipsum.. }

Я не верю, что в Word 2013 в этой области изменился синтаксис, но если у вас есть пример такой разницы, пожалуйста, поделитесь!

1

Первый пример выше, я думаю, по ошибке. Второй выглядит правильно. СРАВНЕНИЕ дает 1, если верно; 0 если ложь = ИЛИ тоже так работает - арифметически. Так что, если любое из ваших предложений COMPARE верно, OR для них даст 1. Вы хотите вывести "Lorem Ipsum", если любое из предложений COMPARE верно. Поэтому IF следует сравнить с 1, а не с 0. В качестве альтернативы, по сравнению с 0, "Lorem Ipsum" может быть выведен для совпадения FALSE. Я думаю, что это другая ошибка: я думаю, что IF ожидает как истинные, так и ложные аргументы для вывода. {IF <condition > <true-text > <false-text >}.

Более сложные логические условия можно выразить экономически (без вложенности), снова творчески используя арифметику. Если, скажем, достаточно, чтобы какой-либо из трех пунктов был истинным, сумма их истинных значений может использоваться в качестве условия для IF. Если все ложно, результат будет нулевым. Общая арифметика может применяться в полях Word с помощью {=}. Например:

{IF {=({COMPARE {MERGEFIELD v1} = 0} + {COMPARE {MERGEFIELD v2} = 0} + {COMPARE {MERGEFIELD v3} = 0})} = 0 "None are zero." "At least one is zero."}

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .