第10回 数式を使って演算処理をする

数式を使って演算処理をする

日々の業務では様々なデータが蓄積されていきますが、それを有効に活用するためには「集計」という作業は欠かせません。

しかしそれをExcelなどで行う場合、計算式を考え、セルに打ち込み、そうして得られたデータを活用するためにまた考え……。と何度も何度も頭と手を動かす必要があります。
さらに、データが増えれば増えるほどそれを保管するファイルは重くなり、だからといってファイルを分割するとデータ活用の際に不便が生じる……。

Forguncyではこういったデータに関するお悩みも簡単に解決可能です。
データをデータベースに集約し、アプリで集計して活用する。その集計も、Excelのような数式で専門知識なしに実現できてしまいます。

本記事では、ノーコードでの在庫管理表の作成を通してForguncyでデータの集計を行う方法について解説します。

見出しの装飾

Forguncyで使用できる数式

ForguncyではExcel互換の数式を様々な場所で使用することができます。
画面上のセルはもちろん、コマンドで業務ロジックを実装する際の条件指定にも数式を直接入力することが可能です。

Excelとの互換があるため、Excelで複雑な数式を作成しているアプリケーションであっても、そのまま数式を使うことができます。
SUMやMAXなどの関数の使用、演算子を使った文字列の連結、()を使った数式なども問題なく動作します。
難しい数式を解析してプログラムに落とし込むための手間も知識も必要ありません。

導入事例ページでは、実際に専門的な数式が使用されているExcelシステムをForguncyに移行した例を公開しておりますので、こちらもぜひご覧ください。

ほかに、Forguncyならではの機能としてテーブル上の任意のフィールド同士を&で結合して1つのセルに表示することができます。
テーブルの準備方法については、公開済みの記事を参照してください。

見出しの装飾

セルに数式をセットする

Forguncyのセルに数式をセットすると、画面上で計算をさせることができます。

数式はExcelのような感覚でセルに直接入力するか、あるいはテキストボックスやコンボボックス、日付など一部のセル型には規定値として設定することも可能です。これを使って、ユーザーが入力した任意の値を使ってアプリ実行時にその場で計算を行い、画面上にその結果を表示させる計算機のようなシステムが実現できます。

Excelの数式以外の難しい専門知識は不要ですし、既にご紹介しているデータのCRUD処理と組み合わせることで計算結果をデータベースに格納することも可能です。

画像の在庫管理表画面には、リストビュー上に在庫管理テーブルのデータが表示されています。在庫管理テーブルは型番やメーカーなどの製品情報に加え、入庫数量と出庫数量のフィールドを持っています。

当月在庫数の表示がない状態の在庫管理表
▲ 当月在庫数の表示がない状態の在庫管理表

この段階では当月の在庫数が分からないため、数式を使って求めた値を画面に表示する必要があります。

リストビューの空列AB列の幅を広げて、当月在庫数を求める数式「=T3-X3」をセットします。通常のリストビュー内の項目セットと同様に、数式をセットするのは一行目のみで構いません。その状態でアプリケーションを実行すると、全行のAB列に製品の当月在庫数が表示されるようになります。

当月在庫数を求める数式をセットした画面
▲ 当月在庫数を求める数式をセットした画面
見出しの装飾

リストビューに数式をセットする

前述の在庫管理表の当月在庫数表示で行ったように、数式はリストビューの内部にもセットできます。
数式中にセル番地を使用する際、ForguncyにもExcelと同様に相対参照と絶対参照があります。基本的にはExcelと同じ要領で使用できますが、リストビューの範囲内にあるセル番地を数式に使用する場合、それが相対参照か絶対参照かで表示される値が変わってしまうため、注意が必要です。

見出しの装飾

相対参照

相対参照ではリストビューの範囲内にあるセルを数式に使用する際、その数式をセットするセルがリストビュー内にあるかどうかで計算値が変わります。

数式をセットしたセルがリストビュー内にある場合、その行の値のみを参照した値が計算値として返ってきます。そのため、数式をセットしたセルには図のように各行の入庫数量と同じ値が表示されます。数式をセットしたセルがリストビューの外にある場合、図と同様に「=SUM(T3)」のような指定をしていても、画面にはリストビュー内のT列すべての合計という計算結果が表示されます。つまり、リストビューの内側にある数式では各行の単一セルを、外側にある数式では列全体を参照するようになっています。

数式のセット位置により計算値が変わる
▲ 数式のセット位置により計算値が変わる
見出しの装飾

絶対参照

相対参照では、リストビュー内のセルにセットされた数式では同じ行にある単一セルを参照していました。これを避け、常に同じセル番地のセルを参照させるためには絶対参照を使用します。絶対参照の数式の書き方はExcelと同じです。図のように「=$T$3」とセットすると、リストビュー内のどの行でもT3セルの値「3」が表示されます。

リストビュー内で絶対参照を使用
▲ リストビュー内で絶対参照を使用
見出しの装飾

テーブルに数式を使用したフィールドを定義する

ここまでは画面上で計算を行う方法について説明してきましたが、画面上に数式を多用すると、ページの描画速度に影響を与えることがあります。その回避方法の1つとして、テーブルに数式フィールドを定義するという方法があります。
数式フィールドは、テーブル上のフィールドを使い計算や文字列の操作をするForguncy独自のフィールドです。実際にデータベース上のテーブルに新しいフィールドができるわけではなく、Forguncy上でのみ使えるフィールドとなっています。そのため、外部データベースと連携を行っているアプリケーションでも安心して利用することができる機能です。

数式と数式フィールドの違い
▲ 数式と数式フィールドの違い

数式フィールドは、演算子や関数を使って作成します。数例として、先ほどまではリストビュー内に直接数式を入力していた「当月在庫数」を求める数式フィールドを作成してみます。ここではテーブルが持つフィールド、「入庫数量」から「出庫数量」を引いた数を「当月在庫数」として使用しているため、設定ウィンドウの数式欄に「=[入庫数量]-[出庫数量]」と式を入力し、保存します。すると、ナビゲーションウィンドウの在庫管理テーブル内に、当月在庫数というフィールドが表示され使用できるようになります。

当月在庫数の数式フィールドの作成
▲ 当月在庫数の数式フィールドの作成

これで、作成済みの在庫管理表画面以外で当月在庫数を参照したいケースでも、計算式を改めて作る必要がなくなりました。同時に、セル番地依存ではなくテーブル上のフィールドを使って数式を作成したため、セル番地の指定のずれによる計算ミスの恐れもなくなりました。

見出しの装飾

数式の結果を見る

既にお気づきかもしれませんが、Forguncyの数式は設計画面でセルに入力をした段階では計算結果が表示されません。
Forguncyではアプリケーションが実行されたタイミングで初めて計算が実行されます。これはExcelとは大きく異なる部分で、アプリケーションの作成中は常に数式がそのまま表示されています。これにより、設計画面ではどのセルにどのような数式をセットしていたのか確認が容易になります。値を確認するには、デバッグ実行をすればOKです。

ForguncyからエクスポートされたExcelファイルやPDFではセットされている数式の計算結果が表示されますので、安心してご利用ください。

見出しの装飾

Forguncyをもっとよく知る

各業種や用途別にForguncyを活用して、成功した事例や使い方をご紹介します。