差し込み印刷でIFフィールドを使って処理を分ける場合に、複数条件(AND,OR)を設定する方法をご紹介します。次の3つの方法があります。
-
AND関数・OR関数を使う方法(条件は2つまで)
-
IFフィールドにIFフィールドをネストする方法
-
Compareフィールドを使った方法
■方法1:AND関数・OR関数を使う方法(条件は2つまで)
■ AND関数を使う
{=AND(x,y)} ■
例:「英語」も「数学」も80点以上なら【合格】そうでなければ【不合格】と表示
{ IF
{=and({ MERGEFIELD
英語 }
>=
80, { MERGEFIELD
数学
}
>=
80)} = 1 "合格"
"不合格"
}
And関数は2つの条件がTrueの場合に1を返すため、Ifフィールドで=1なら…の条件式を作成できます。
■ OR関数 {=OR(x,y)}
■
例:「英語」か「数学」が80点以上なら【合格】そうでなければ【不合格】と表示したい
{ IF
{=or({ MERGEFIELD
英語 }
>=
80, { MERGEFIELD
数学
}
>=
80)} = 1 "合格"
"不合格"
}
Or関数はどちらか1つの条件がTrueの場合に1を返すため、Ifフィールドで=1なら…の条件式を作成できます。
■方法2:IFフィールドにIFフィールドをネストする
■ AND条件
■
例:「英語」も「数学」も80点以上なら【合格】そうでなければ【不合格】と表示
◎
1つ目の条件をクリアした場合(True)、2つ目の条件を検証するようにします。(1つ目の条件・2つ目の条件ともにクリアできなければ不合格)
{ IF
{ MERGEFIELD
英語 }
>=
80
{ IF
{ MERGEFIELD
数学
}
>=
80 "合格"
"不合格"
}
"不合格"
}
■ OR条件 ■
例:「英語」か「数学」が80点以上なら【合格】そうでなければ【不合格】と表示したい
◎
OR条件なので1つ目の条件をクリアしたら【合格】で終了、クリアしなかったら(False)2つ目の条件を記述します。
{ IF
{ MERGEFIELD
英語 }
>=
80 "合格"
{ IF
{ MERGEFIELD
数学
}
>=
80 "合格"
"不合格"
}
}
■ 方法3:IFフィールドとCompareフィールド
を使う(3つ以上の条件OK)
Compareフィールドは演算子(> < >= <= <> =
)を使って値を比較し、結果がTrueなら1、Falseなら0を返します。
そのためTrueの合計数を利用して条件を作成できます。AND条件なら合計が○なら…(全て合致)、OR条件なら合計が1以上なら…(いずれか合致)
とするわけです。
{ Compare {
MERGEFIELD
英語 }
>= 80
}
→ True(80点以上)なら結果は「1」、
False(80点未満)なら結果は「0」 |
■
3つ以上のAND条件を指定したい
■
CompareフィールドはTrueなら1を返すので、これの合計数を条件にすれば3つ以上のAND条件を作成できます。(重要:AND関数・OR関数の引数は2つまでなので3つ以上には使えない)※
3つ以上のAND/OR条件についてはこちらでも詳しく解説しています。
例:「英語」
も「数学」も「国語」も80点以上なら【合格】そうでなければ【不合格】と表示
{ IF {= {Compare {MERGEFIELD
英語 }
>= 80}
+ {Compare
{MERGEFIELD
数学}
>= 80}
+
{Compare {MERGEFIELD
国語}
>= 80}}
=3
"合格"
"不合格"
}
■
3つ以上のOR条件を指定したい
■
CompareフィールドはTrueなら1を返すので、これを合計して1以上であればいづれかに合致したかどうかが分かります。
例:「英語」「数学」
「国語」のいづれかが80点以上なら【合格】そうでなければ【不合格】と表示
{ IF {= {Compare {MERGEFIELD
英語 }
>= 80}
+ {Compare
{MERGEFIELD
数学}
>= 80}
+
{Compare {MERGEFIELD
国語}
>= 80}}
>=1
"合格"
"不合格"
}
【応用】AND条件とOR条件が混ざった場合も対応できます。
例:6歳以下または65歳以上で(←OR条件)区内在住なら(← AND条件)無料
( OR関数でTrueなら1、区内在住でTrueなら1、合計2なら無料)
{
IF { = {=OR(
{Compare {MERGEFIELD
年齢}
<= 6} ,
{Compare {MERGEFIELD
年齢}
>= 65} )}
+ {Compare {MERGEFIELD
在住}
= "区内"
}} =
2 "無料"
"有料"
}
|