スポンサーリンク

「Calculated Fields Form」(自動見積・計算)プラグインの使い方 ② 計算式の詳細解説

Calculated Fields Form②ヘッダー画像WPプラグイン
人物アイコン

WordPress自動見積プラグイン「Calculated Fields Form」で自動見積を作成する際、複数の条件による計算はどのようにしたらよいのだろうか。

このような疑問の参考となるよう、サンプルを使って計算式の一例を解説します。

Calculated Fields Form (英語)

当ブログでは、Calculated Fields Formを3つの記事で詳しく解説しています。

  1. 基本設定
  2. 計算式の詳細解説 ⇒ この記事
  3. メールフォーム、決済機能等(有料版の機能)

Calculated Fields(計算用フィールド)について

Calculated Fields(計算用フィールド)についてです。(「Calculated Fields Formの使い方①」と一部重複します)

Calculated Fields Formフォーム設定
図1

①②のボタンでField名や計算に使う記号を、③(数式エディター)に入力します。(直接入力も可能です。)

Calculated Fields Formフォーム設定
Mathematical Operators
Calculated Fields Formフォーム設定
Logical Operators

Operators(図1の②)は、Mathematical Operatorsで計算に使う記号を、Logical Operatorsで条件分岐等に使う記号を入力できます。(直接入力もできます)

基本的な計算式について

先の「Calculated Fields(計算用フィールド)」でよく使う、基本的な計算式をご紹介します。
プログラミングやエクセルで使われる四則演算子や論理演算子などが使われています。(全ての記号が使えるわけではないようです)

Mathematical Operatorsで使われる主な記号

足し算(加算)
引き算(減算)
* 掛け算(乗算)※算数の記号とは異なります。
/ 割り算(除算)
sum(x、y、z、….) ()内の値の合計
ceil(x) xを最も近い整数に切り上げます。fieldname1の値が1.4の場合、ceil(fieldname1)= 2
ceil(x、y) xをyの最も近い倍数に切り上げます。ceil(2.3、0.5)= 2.5
floor(x) Xを最も近い整数に切り下げます。fieldname1の値が1.6の場合、floor(fieldname1)= 1
floor(x、y) xの値を、yの最も近い倍数に切り下げます。floor(2.6、0.5)= 2.5
round(x) xを最も近い整数にします。fieldname1の値が2.5の場合、round(fieldname1)= 3
round(x、y) xの値を、yの最も近い倍数に切り下げます。round(2.3、0.5)= 2.5
max(x、y、z、…、n) 最高値の数値を表示。
fieldname1の値が5で、fieldname2が10の場合、max(fieldname1、fieldname2)=10
min(x、y、z、…、n) 最小値の数値を表示。
fieldname1の値が5で、fieldname2が10の場合、min(fieldname1、fieldname2)= 5

他の記号を知りたい方はこちら(英語)

Logical Operatorsで使われる主な記号

IF(AND(論理式1, 論理式2, 論理式3, …),A,B)
論理式1,2,3が全てTRUEだった場合、Aになり、それ以外の場合はBを表示します。

IF(OR(論理式1, 論理式2, 論理式3, …),A,B)
論理式1,2,3が1つでもTRUEだった場合、Aになり、それ以外の場合はBを表示します。

※論理式の数は1つ以上で幾つでもOKです。
※IF関数、OR関数は入れ子にして、複雑な条件分岐に対応できます。
※fieldname*==X 
Xの値はCalculated Fields(計算用フィールド)の場合は数値、プルダウンやラジオボタン等の場合はValue値

例:IF(AND(fieldname1==5,fieldname2>1),500,0)
fieldname1(数値:5)、fieldname2(数値:2)の場合→500
fieldname1(数値:5)、fieldname2(数値:1)の場合の場合→0

NOTは、例えば、IF(NOT(fieldname1==5),A,B) で、fieldname1が5ではない場合にA、5の場合にBになります。

JavaScriptコードを入力

数式エディター(図1の③)には、直接JavaScriptコードを入力して複雑な計算ができます。
以下のように入力します。

(関数(){
//ここにあなたのコード
})();


以下は、このプラグインのマニュアルに記載されている例です。

(function(){
if(fieldname3 > 100) return fieldname1+fieldname2;
if(fieldname3 <= 100) return fieldname1*fieldname2;
})();

サンプルを使って計算式を解説

ここでは、「Calculated Fields Formの使い方①」でも使用したサンプル(英会話学校)で解説します。

サイト上の表示

Calculated Fields Formフォーム設定
画像1

①の3つの条件(コース、部屋の種類、留学期間)の組み合わせで、②の「授業料+寮費」が算出されます。
このページでは、この部分の計算方法について解説します。

※留学費用合計は、「入学金」と「授業料+寮費」から割引額を引いた金額になります。(Calculated Fields Formの使い方①)で解説しており、ここでは解説しません。)

フィールドの設定画面

Calculated Fields Formフォーム設定
画像2

設定画面右側の「授業料+寮費」をクリックした時の画像。

B「授業料+寮費」は、A(3つのフィールド)の選択内容の組み合わせによって算出されます。

Aの各フィールド名は以下です。
コース:fieldname2、お部屋の種類:fieldname10、留学期間:fieldname9

Cに計算式が入っています。

複数条件による計算式の解説

画像2の「授業料+寮費」の料金表です。

留学費用サンプル
表1

コース:fieldname2、お部屋の種類:fieldname10、留学期間:fieldname9 の3つの要素を組み合わせた結果に料金が表示されるように計算式を入れます。

各項目のvalue値
・コース fieldname2 基礎コース:1、ESLコース:2、TOEICコース:3
・お部屋の種類 個室:1 、複数人部屋 : 2
・期間 1週間:1、2週間:2、3週間:3、4週間:4、 5週間 : 5

IF関数を使った例
例えば、個室、基礎コース、1週間の場合は、70,000円、それ以外の場合FALSE
これをIF関数に当てはめると、
IF(AND(fieldname2==1,fieldname10==1,fieldname9==1),70000,FALSE)・・・①

また、個室、基礎コース、2週間の場合は、115,000円、それ以外の場合FALSE
IF(AND(fieldname2==1,fieldname10==1,fieldname9==2),115000,FALSE)・・・②

①のFALSEに、②を入れ、入れ子にします。
IF(AND(fieldname2==1,fieldname10==1,fieldname9==1),70000,IF(AND(fieldname2==1,fieldname10==1,fieldname9==2),115000,FALSE))

3種類の選択肢の組み合わせは、3×2 ×5=30通りあります。
30通りの組み合わせを入れ子にします。

しかし、30通りを1つ1つ加えていくのは、たいへんですし、実際には、組み合わせの数はもっと多くなることが多いです。
ですので、エクセルとテキストエディタを使って、IF関数の組み合わせで計算式を簡単に作成する方法を次でご紹介します。

IF関数の組み合わせで計算式を作成

1.エクセルを使う

Calculated Fields Formサンプル

1-A 個室の料金表(表1)を使った作業(エクセル)
以下の順で作業を行います。

  1. ①のように、条件式を作成します。①は個室(fieldname10=1)、1週間(fieldname9=1)でコース(fieldname2)が1~3の3種類。
  2. ②のD12セルに =CONCAT(D8,D4,”,”)という関数を入れます。CONCATは文字列を連結する関数です。
    D12セルは、部屋の種類が個室、コースが基礎コース、1週間の料金が70,000円という意味です。
  3. D12セルを選択して、D14までドラックすると、②のようにIF関数の式が3つ表示されます。
  4. それから、D8~D14までを選択した状態で、右にH列までドラックすると、H列までIF関数ができます。
  5. D12~H14の15個のIF関数式を次の手順で使います。

1-B 複数人数部屋の料金表(表1)でも同様の手順で行います。
こちらでも15個のIF関数式ができます。

2.テキストエディタを使って、1本の計算式にする

エクセルの作業が終わったら、今度はサクラエディタなどのテキストエディタを使って以下の順で作業を行います。

  1. テキストエディタに、前述の1-Aと1-Bでできた、それぞれ15個、合わせて30個のIF関数をコピーします。
  2. 改行や余計な余白を、置換機能を使って削除し、1本の計算式にまとめます。
  3. 30個の関数があるので、括弧(閉じる)を30最後に加えます。

最終的にできた計算式が以下です。これを画像2のC(計算用フィールド)に入れます。

IF(AND(fieldname10==1,fieldname2==1,fieldname9==1),70000,IF(AND(fieldname10==1,fieldname2==1,fieldname9==2),115000,IF(AND(fieldname10==1,fieldname2==1,fieldname9==3),160000,IF(AND(fieldname10==1,fieldname2==1,fieldname9==4),195000,IF(AND(fieldname10==1,fieldname2==1,fieldname9==5),243000,IF(AND(fieldname10==1,fieldname2==2,fieldname9==1),75000,IF(AND(fieldname10==1,fieldname2==2,fieldname9==2),125000,IF(AND(fieldname10==1,fieldname2==2,fieldname9==3),175000,IF(AND(fieldname10==1,fieldname2==2,fieldname9==4),215000,IF(AND(fieldname10==1,fieldname2==2,fieldname9==5),268000,IF(AND(fieldname10==1,fieldname2==3,fieldname9==1),85000,IF(AND(fieldname10==1,fieldname2==3,fieldname9==2),150000,IF(AND(fieldname10==1,fieldname2==3,fieldname9==3),205000,IF(AND(fieldname10==1,fieldname2==3,fieldname9==4),240000,IF(AND(fieldname10==1,fieldname2==3,fieldname9==5),300000,IF(AND(fieldname10==2,fieldname2==1,fieldname9==1),55000,IF(AND(fieldname10==2,fieldname2==1,fieldname9==2),95000,IF(AND(fieldname10==2,fieldname2==1,fieldname9==3),131000,IF(AND(fieldname10==2,fieldname2==1,fieldname9==4),160000,IF(AND(fieldname10==2,fieldname2==1,fieldname9==5),200000,IF(AND(fieldname10==2,fieldname2==2,fieldname9==1),60000,IF(AND(fieldname10==2,fieldname2==2,fieldname9==2),105000,IF(AND(fieldname10==2,fieldname2==2,fieldname9==3),146000,IF(AND(fieldname10==2,fieldname2==2,fieldname9==4),180000,IF(AND(fieldname10==2,fieldname2==2,fieldname9==5),225000,IF(AND(fieldname10==2,fieldname2==3,fieldname9==1),65000,IF(AND(fieldname10==2,fieldname2==3,fieldname9==2),104000,IF(AND(fieldname10==2,fieldname2==3,fieldname9==3),149000,IF(AND(fieldname10==2,fieldname2==3,fieldname9==4),190000,IF(AND(fieldname10==2,fieldname2==3,fieldname9==5),237000,))))))))))))))))))))))))))))))

まとめ

以上、Calculated Fields Formの計算式について解説しました。

主要な部分を解説しましたが、他にも機能は数多くあり、使いこなすとかなり便利なプラグインだと思います。
テキストで読んでもなかなかピンとこないかもしれませんが、実際に操作する上で少しでも参考になれば幸いです。

Calculated Fields Form (英語)

メールフォーム、決済機能等については、こちらの記事をご覧ください。

タイトルとURLをコピーしました