書けまっせPDF の式で使用できる演算子について説明します。
| 演算子 | 意味 | 入力例 | 表示(結果) | 
|---|---|---|---|
| + | 加算 | 15+20 | 35 | 
| - | 減算 | 15-20 | -5 | 
| * | 乗算 | 1.5*2 | 3 | 
| % | 乗算(除算の余り) | 15%2 | 1 | 
関係演算子で評価された結果、真の場合は1、偽の場合は0 になります。
| 演算子 | 意味 | 入力例 | 表示(結果) | 
|---|---|---|---|
| = | 等しい場合、真 | 1.5=2 | 0 | 
| <> | 等しくない場合、真 | 15<>2 | 1 | 
| < | 左側が右側よりも小さい場合、真 | 1.5<2 | 1 | 
| > | 左側が右側よりも大きい場合、真 | 1.5>2 | 0 | 
| <= | 左側が右側よりも等しいか小さい場合、真 | 1.5<=2 | 1 | 
| >= | 左側が右側よりも等しいか大きい場合、真 | 1.5>=2 | 0 | 
関係演算子で左右を比較する際、片方は数字、片方は文字列のように型が違う場合は、偽(0)として扱います。
値がなにも入っていないテキストボックスや差込フィールドの場合は、0(ゼロ)として評価します。
下記の表の上になるほど優先順位が高くなります。
計算式の優先順位を明確にするために括弧「( )」を使用することができます。
【優先順位の例】1.5 * 2 + 3 ⇒ (1.5 * 2) + 3 = 6
【結合規則の例】2 * 15 % 2 ⇒ (1.5 * 2) % 3 = 0
| 優先順位 | 演算子 | 結合規則 | 
|---|---|---|
| 高 | マイナス-(単項演算子) | 右から左 | 
| ↑ | 乗算* 除算/ 剰余% | 左から右 | 
| ↑ | 加算+ 減算- | 左から右 | 
| ↑ | &(文字列結合演算子) | 左から右 | 
| 低 | = <> <= >= < >(比較演算子) | 左から右 | 
下記の表は式に使用できる関数の一覧です。
| 関数名 | 書式 | 引数 | 返値 | 説明 | 
|---|---|---|---|---|
| AVG | AVG(値1, 値 2,...) | 数値1, 数値 2...(複数指定 可) | 平均値 | 指定された引数の平均 値を返します。 | 
| SUM | SUM(値1, 値 2,...) | 数値1, 数値 2...(複数指定 可) | 合計値 | 指定された引数の合計 値を返します。 | 
| MIN | MIN(値1, 値 2,...) | 数値1, 数値 2...(複数指定 可) | 最小の値 | 指定された引数に含ま れる最小の数値を返し ます。 | 
| MAX | MAX(値1, 値 2,...) | 数値1, 数値 2...(複数指定 可) | 最大値 | 指定された引数に含ま れる最大の数値を返し ます。 | 
| TODAY | TODAY( ) | なし | 現在の日付を示すシリアル 値 (1900/1/1 = 1) | 現在の日付を示すシリ アル値を返します。 | 
| NOW | NOW( ) | なし | 現在の時刻を示すシリアル 値 (00:00:01 = 0.00001) | 現在の時刻を示すシリ アル値を返します。 | 
| DATE | DATE(文字 列) | 日付文字列 【例】 "2007/1/17" | 日付のシリアル値 (1900/1/1 = 1) 【例】DATE("2007/1/17") = 39099 | 指定された日付文字列 から日付を示すシリア ル値を返します。 | 
| TIME | TIME(文字列) | 時間文字列 【例】 "10:30:00" | 時刻のシリアル値 (00:00:01= 0.00001) 【例】TIME("10:30:00") =0.4375 | 指定された時刻文字列から時刻を示すシリアル値を返します。 | 
| YEAR | YEAR(値) | 年を示すシリアル値 | 年 (1900 ~ 9999 の範囲の整数) | 指定されたシリアル値に対応する年を返します。 | 
| MONTH | MONTH(値) | 月を示すシリアル値 | 月 (1 ~ 12 の範囲の整数) | 指定されたシリアル値に対応する月を返します。 | 
| WEEKDAY | WEEKDAY(値, 種類) | 日付を示すシリアル値,種類(1~3)[省略可] | 曜日を示す整数 | 指定されたシリアル値に対応する曜日を示す数値を返します。 種類が、1 のとき 1 (日曜) ~ 7(土曜) の範囲の整数 2 のとき 1 (月曜) ~ 7(日曜) の範囲の整数 3 のとき 0 (月曜) ~ 6(日曜) の範囲の整数 | 
| DAY | DAY(値) | 日付を示すシリアル値 | 日 (1 ~ 31 の範囲の整数) | 指定されたシリアル値に対応する日を返します。 | 
| HOUR | HOUR(値) | 日付と時刻を示すシリアル値 | 時間 (0 ~ 23 の範囲の整数) | 指定されたシリアル値に対応する時間を返します。 | 
| MINUTE | MINUTE(値) | 日付と時刻を示すシリアル値 | 分 (0 ~ 59 の範囲の整数) | 指定されたシリアル値に対応する分を返します。 | 
| SECOND | SECOND(値) | 日付と時刻を示すシリアル値 | 秒 (0 ~ 59 の範囲の整数) | 指定されたシリアル値に対応する秒を返します。 | 
| PAGE | PAGE( ) | なし | 現在のページ番号 | 現在のページ番号を返します。 | 
| TOTALPAGE | TOTALPAGE( ) | なし | 総ページ数 | 総ページ数を返します。 | 
| MOD | MOD(数値,除数) | 数値, 除数 | 剰余 【例】 MOD(22, 3)=1 MOD(22.5, 3)=1.5 | 数値を除数で割ったときの剰余を返します。 | 
| ABS | ABS(数値) | 数値 | 絶対値 【例】 ABS(-3)=3 ABS(3)=3 | 数値を絶対値にします。 | 
| INT | INT(数値) | 数値 | 小数点以下を切り捨てた整数 【例】 INT(20.111111)=20 INT(20.999999)=20 | 数値を小数点以下を切り捨てて整数にします。 | 
| ROUND | ROUND(値,桁数) | 数値, 桁数 | 四捨五入した結果の値 ROUND(2.15,1) = 2.2 | 数値を四捨五入して指定された桁数にします。 | 
| ROUNDDOWN | ROUNDDOWN(値, 桁数) | 数値, 桁数 | 切り捨てした結果の値 ROUNDDOWN(2.15,1) = 2.1 | 数値を指定された桁数に切り捨てます。 | 
| ROUNDUP | ROUNDUP(値, 桁数) | 数値, 桁数 | 切り上げした結果の値 ROUNDUP (2.13,1) = 2.2 ROUNDUP (2.13,1) = 2.2 | 数値を指定された桁数に切り上げます。 | 
| T | T(値) | 値 | 文字列 【例】 T("abc")="abc" T(123)="" | 指定された値に応じた文字列を返します。 指定された値が文字列のときは、そのまま指定された文字列を返します。 指定された値が数値のときは、空文字列を返します。 | 
| LEN | LEN(文字列) | 文字列 | 文字数 【例】 LEN("abc")=3 LEN(12345)=5 | 指定された文字列の文字数を返します。 数値の場合にも暗黙に文字列に変換します。 | 
| TRIML | TRIML(文字列) | 文字列 | トリミングされた文字列 【例】 TRIML(" abc")="abc" | 指定された文字列の先頭からスペース、タブ、改行文字を削除します。 | 
| TRIMR | TRIMR(文字列) | 文字列 | トリミングされた文字列 【例】 TRIMR("abc ")="abc" | 指定された文字列の行末からスペース、タブ、改行文字を削除します。 | 
| RANK | RANK(数値,範囲, 順序) | 数値, 範囲,順序(0 = 降順, 1 = 昇順) | 順位を示す値 【例】差込フィールド(表) RANK(E2.b2, E2.b1:E2.b5,0)=3 | 順序に従って範囲内の数値を並べ替えたとき、数値が何番目に位置するかを返します。 | 
| COUNT | COUNT(範囲) | 範囲 | データ個数 【例】差込フィールド(表) COUNT(E2.b1:E2.b5) | 指定された範囲のオブジェクトに含まれる空白以外のデータ個数を返します。 | 
| COUNTBLANK | COUNTBLANK(範囲) | 範囲 | データ個数 【例】差込フィールド(表) COUNTBLANK(E2.b1:E2.b5) | 指定された範囲のオブジェクトに含まれる空白データの個数を返します。 | 
| IF | IF(式1, 式2,式3) | 条件式, 式(真の場合),式(偽の場合) | 指定された式を判定する。 IF(t1=t2, t3, t4) IF(t1=PAGE(), 今日, 昨日) | 論理式の評価結果が真のときは第2 引数で指定した値、偽の場合は第3 引数で指定した値となります。 | 
| SUMIF | SUMIF(条件範囲, 条件,合計範囲) | 条件範囲, 条件式を示す文字列, 合計範囲(省略不可) | 合計値 【例】差込フィールド(表) SUMIF(E2.a1:E2.a5, "=AAA",E2.b1:E2.b5) この例は、条件範囲に表a1~a5 を指定して、条件となる式"=AAA"を満す対応された合計範囲の表b1~b5 内の合計値が返る。 | 条件を満たす範囲内の値の合計値を返します。 条件範囲と合計範囲の指定にはデータ数を揃える必要があります。 また条件範囲と合計範囲を同じにすることができます。 | 
| COUNTIF | COUNTIF(範囲, 検索条件) | 範囲, 検索条件を示す文字列 | データ個数 【例】差込フィールド(表) COUNTIF(E2.a1:E2.a5,"AAA") この例は、条件範囲に表a1~a5 を指定して、検索条件となる文字列"AAA"の個数をカウント。 | 検索条件を満たす指定された範囲のデータ個数を返します。 | 
| CONTAINS | CONTAINS(文字列, 検索文字列) | 文字列, 検索文字列 | 真(1)か偽(0) 【例】 CONTAINS("ABC", "A")=1 CONTAINS("ABC", "X")=0 CONTAINS(199,99)=1 | 指定された文字列内に検索文字列が含まれる場合に真(1)を返します。 含まれない場合に偽(0)を返します。 数値が指定された場合には、暗黙に文字列に変換して検索を行います。 | 
| AND | AND(論理式1, 論理式2...) | 論理式1, 論理式2... | 真(1)か偽(0) 【例】 AND(E2.a1="AAA",E2.b1=999) E2.a1 に"AAA"かつE2.b1 に999 が入っていれば1 を返し、いずれかが違っていれば0 を返す | 指定された複数の条件が全て真かどうか判定します。 | 
| OR | OR(論理式1,論理式2...) | 論理式1, 論理式2... | 真(1)か偽(0) 【例】 OR(E2.a1="AAA",E2.b1=999) E2.a1 に"AAA"またはE2.b1に999 が入っていれば1 を返し、いづれも違う場合には0 を返す | 指定された複数の条件のうち、どれか一つが真かどうか判定します。 | 
| NOT | NOT(論理式) | 論理式 | 真(1)か偽(0) 【例】 NOT(E2.a1="AAA") E2.a1 に"AAA"が入っていれば0 を返し、違う場合には1を返す | 指定された論理式の結果が真の場合には偽を返し、偽の場合には真を返します。 | 
&演算子を使うと文字列の結合ができます。
【例1】HOUR やPAGE 関数は通常は数値として扱いますが、&演算子により、暗黙のうちに文字列として扱います。
"現在は" & HOUR(NOW()) & "時です" ⇒ 現在は12 時ですPAGE() & " / " & TOTALPAGE() ⇒ 12 / 52
【例2】DATE 関数やTIME 関数など引数が文字列のみの場合、数値をダブルクオート(")で囲むことで文字列として扱うことができます。オブジェクト名「T1」のテキストボックスに「2008」という数値が入っている場合、&演算子により、暗黙のうちに文字列として扱います。
DATE(T1 & "/12/23") ⇒ 39805(2008 年12 月23 日を表すシリアル値)
計算の式は、値がテキストボックスに入力されたときなど様々なタイミングで再計算されます。
手動で再計算する場合は、[ F5 ]キーを押すか、「表示」リボンの「その他」グループにある「更新」をクリックします。
 テキストボックスの改行と表示形式
 テキストボックスの改行と表示形式
式で使う数値や文字列は1 行に限ります。計算式で参照に使われるテキストボックス内に改行記号があると、計算が行われません。結果を表示するテキストボックスには「#ERROR!」と表示されます。