計算式を使って単価や数量をフォーム内で計算する

AFormsはv2.1から、単価や数量に計算式を使えるようになりました。計算式を書いておくとフォーム内で計算が行われ、その場で単価や数量を変えられます。この記事では計算式の使い方を説明します。

AFormsはv2.1から、単価や数量に計算式を使えるようになりました。
計算式を書いておくとフォーム内で計算が行われ、その場で単価や数量を変えられます。
この記事では計算式の使い方を説明します。
AForms v2.2.0の情報です。

もくじ

計算式を書ける場所

計算式は次の場所に書けます。

単価を計算したい場合は自動項目を、数量を計算したい場合は自動数量項目を使うと良いです。

計算式で変数を使う

計算式には変数を使えます。
計算式の中に英語で変数っぽい単語を書くと、それは変数と解釈され、その変数と実際の数値を関連付けることができるようになります。

入力欄に計算式を入力してからフォーカスを外すと、入力欄の下に変数が表示されます。

変数と関連付けられる数値は次の通りです。

計算式の中では、変数をいくつでも何回でも使えます。

計算式の書き方(文法)

計算式には、数値、変数、演算子、関数の適用を書けます。カッコも使えます。
いくつか例を挙げます:

注意点として、計算式に単項マイナスを書くことはできません。いくつか例を挙げます:

変数で使える文字

連続する半角英数が変数と解釈されます。ただし、変数の最初の文字に数字を使うことはできません。
英語の大文字と小文字は区別されません。
いくつか例を挙げます:

使える演算子と関数

次の演算子と関数が使えます。Excelに似せてあります。
AFormsの数式に論理値(真偽値)はありません。論理値の代わりに1と0を使います。

a + b足し算。
1 + 23
a - b引き算。
3 - 12
a * b掛け算。
2 * 36
a / b割り算。
5 / 22.5
a ^ bべき乗。
2 ^ 38
a = bイコール。
10 = 101
10 = 90
a <> bイコールでない。
10 <> 100
10 <> 91
a > b大なり。
10 > 91
10 > 100
a < b小なり。
9 < 101
10 < 100
a >= b大なりイコール。
10 >= 91
10 >= 101
a <= b小なりイコール。
9 <= 101
10 <= 101
IF(a, b, c)条件分岐。
aが0でないならb、0ならc。
IF(1, 2, 3)2
IF(0, 2, 3)3
AND(a, b, ...)論理積(かつ)。パラメーターは1~255個受け付けます。
すべてのパラメーターが0でないなら1。いずれかのパラメーターが0なら0。
AND(2, 3)1
AND(0, 2)0
OR(a, b, ...)論理和(または)。パラメーターは1~255個受け付けます。
いずれかのパラメーターが0でないなら1。すべてのパラメーターが0なら0。
OR(0, 2)1
OR(0, 0)0
XOR(a, b, ...)排他的論理和。パラメーターは1~255個受け付けます。
パラメーターのうち0でないものが奇数個あるなら1。そうでないなら0。
XOR(0, 2)1
XOR(2, 2)0
XOR(0, 2, 2)0
NOT(a)否定。
NOT(2)0
NOT(0)1
IFERROR(a, b)エラーからの復帰。
aがエラーでなければa、エラーならb。
IFERROR(1 + 1, 3)2
IFERROR(1 / 0, 3)3
ROUND(a, b)bで指定されるケタでaを四捨五入。
b=0なら1の位、b=-1なら10の位、b=1なら小数第1位
ROUND(41.82, 0)42
ROUND(41.82, 1)41.8
ROUNDUP(a, b)bで指定されるケタでaを切り上げ(±無限大の方向)。
ROUNDUP(41.82, 0)42
ROUNDUP(41.82, 1)41.9
ROUNDDOWN(a, b)bで指定されるケタでaを切り捨て(ゼロの方向)。
ROUNDDOWN(41.82, 0)41
ROUNDDOWN(41.82, 1)41.8
TRUNC(a, b)bで指定されるケタでaの端数を切り捨てます(ゼロの方向)。
TRUNC(41.82, 1)41.8
TRUNC(-41.82, 1)-41.8
bを省略した場合は、b=0と仮定されます。
TRUNC(41.82)41
INT(a)端数を切り捨てます(マイナス無限大の方向)。
INT(41.82)41
INT(-41.82)-42
ABS(a)絶対値。
ABS(2)2
ABS(-2)2
SIGN(a)符号。
SIGN(2)1
SIGN(-2)-1
SIGN(0)0
QUOTIENT(a, b)a÷bの整数部。
QUOTIENT(7, 2)3
QUOTIENT(10.5, 5)2
MOD(a, b)a÷bの余り。
MOD(7, 2)1
MOD(10.5, 5)0.5
MIN(a, b, ...)最小値。パラメーターは1~255個を受け付けられます。
MIN(1, 5)1
MIN(1, 5, -1)-1
MAX(a, b, ...)最大値。パラメーターは1~255個を受け付けられます。
MAX(1, 5)5
MAX(1, 5, 10)10
SWITCH(a, m1, e1, ...)条件分岐。aに続けて、条件mと式eからなる分岐の対を複数指定してください。計算結果は、aと一致するmと対になっているeです。
SWITCH(0, 0, 10, 1, 11)10
SWITCH(1, 0, 10, 1, 11)11
どの分岐にも一致しない場合はエラーになります。
SWITCH(2, 0, 10, 1, 11)エラー
一番最後のパラメーターとして「どの分岐にも一致しない場合の式」を指定することもできます。
SWITCH(2, 0, 10, 1, 11, 100)100
SWITCH(0, 0, 10, 1, 11, 100)10
パラメーターの最大数は255ですので、分岐を126個まで作れます。

ご注意

計算でエラーが出たらどうなるか

計算でエラーが出た場合、関連する明細行は見積から除外されます。
たとえば、自動項目の金額の欄に1 / 0と書いたら、0で割り算をするので計算がエラーになります。そして、本来見積に入るはずだった自動項目の明細行は、見積から除外されます。

なお、フォームのプレビューでは、計算でエラーが出るとアラートが出るようになっています。
プレビューでない本番では、計算でエラーが出ても画面上では何も起こりません。ただし、フォームを送信するとエラーでアラートが表示されます。

計算の限界

計算式が使えるようになったことで、AFormsが大きな数値を扱う場面は増えていくと思います。
AFormsがどれくらい大きな数値を扱えるのかは、ソフトが動作する環境の影響を受けます。
著者が調べた限りでは、だいたい12ケタ(兆の位)を越えたあたりで動作に問題が出てくるようです。
AFormsは、式の計算中に出た問題には対処しますが、それ以外の場所で出た問題には気づかないことがあります。その場合、正しくない数値が表示されることがあります。
だいたい12ケタ(兆の位)、これを越えないように注意してフォームを作るようご注意ください。

0 1