フォーミュラとファンクション
フォーミュラの使い方
スプレッドシートのフォーミュラとは、セルの値を計算する式のことです。
フォーミュラの入力
4D View Pro エリアにフォーミュラを入力するには:
- フォーミュラを入力するセルを選択します。
- = (等号) を入力します。
- フォーミュラを入力し、Enterキーを入力します。
フォーミュラ入力の際には、次のショートカットを使うことができます:
- フォーミュラにセル参照を入力する代わりに、参照するセルをクリックします:
- 入力したい関数の頭文字を入力します。 すると、利用可能な関数と参照の一覧がポップアップメニューに表示され、必要な要素を選択することができます:
また、命名フォーミュラを作成すると、その名前で呼び出すことが可能です。 この場合、VP ADD FORMULA NAME コマンドを使用して命名フォーミュラを入力します。
演算子とオペランド
すべてのフォーミュラはオペランドと演算子から成り立っています:
- 演算子: 後述の 値と演算子 参照。
- オペランド は、いくつかのカテゴリーに分けられます:
- 値 (5つのデータ型がサポートされています)
- 他のセルへの参照 (相対参照、絶対参照、ミックス参照、あるいは名前での参照)
- 標準のスプレッドシートファンクション (関数)
- 4Dフォーミュラに基づく 4Dファンクション (4D変数、フィールド、メソッド、コマンド、式が利用可能です)
値と演算子
4D View Pro は 5つのデータ型をサポートします。 それぞれのデータ型について、特定の定数と演算子がサポートされています。
データ型 | 値 | 演算子 |
---|---|---|
数値 | 1.2 1.2 E3 1.2E-3 10.3x | + (加法) - (減法) * (乗法) / (除法) ^ (べき乗、数値を自身に対してかける回数) % (パーセント -- 演算子の前の数値を100で割る) |
日付 | 10/24/2017 | + (日付 + 日数 -> 日付) + (日付 + 時間 -> 日付 + その日の時間) - (日付 - 日数 -> 日付) - (日付 - 日付 -> 2つの日付間の日数) |
時間 | 10:12:10 | 経過時間演算子: + (加法) - (減法) * (経過時間 * 数値 -> 経過時間) / (経過時間 / 数値 -> 経過時間) |
文字列 | 'Sophie' または "Sophie" | & (連結) |
ブール | TRUE または FALSE | - |
比較演算子
同じ型の 2つのオペランドに対して以下の演算子を使用することができます:
演算子 | 比較 |
---|---|
= | 等しい |
<> | 異なる |
> | 大きい |
< | 小さい |
> = | 以上 |
<= | 以下 |
演算子の優先順位
以下は演算子を優先度順に並べたものです (優先度が高い方が上):
演算子 | 説明 |
---|---|
() | カッコ (グループ化) |
- | 否定 |
+ | 追加 |
% | パーセント |
^ | べき乗 |
* および / | 乗法と除法 |
+ と - | 加法と減法 |
& | 連結 |
= > < >= <= <> | 比較 |
セル参照
フォーミュラ (式) は多くの場合、セルアドレスを使って他のセルを参照します。 このような式を他のセルにコピーすることも可能です。 たとえば、C8 に入力された以下の式では、すぐ上にある 2つのセルの値を足して結果を表示します。
= C6 + C7
この式はセル C6 と C7 を参照します。 つまり、式内で使用する値については他のセルを参照するよう、4D View Pro に指示しています。
こういった式を別のセルにコピーあるいは移動させた場合、式内のセルアドレスは参照の仕方によって連動して変化したり変化しなかったりします。
- 参照が変化するものは 相対参照 と呼ばれ、式が入っているセルを基準として、相対的にどれだけ上下左右に離れているかでセルを参照します。
- 常に特定のセルを参照するものは 絶対参照 と呼ばれます。
- また、複合参照といって、特定の行あるいはカラムに参照を固定することもできます。
参照の記法
セル座標 ( C5
など) のみを使用すると、4D View Pro はそれを相対参照として解釈します。 文字と数字の前に $ (ドル) 記号を入れることで、参照を絶対参照にすることができます (例: $C$5
)。
ドル記号を文字あるいは数字の前だけに入れることで相対参照と絶対参照を組み合わせることができます (例: $C5
、C$5
)。 複合参照を使用すると、行かカラムを絶対参照として指定しながら、もう片方については相対的に参照させることが可能になります。
素早くかつ正確に絶対参照を指定するには、セルを命名し、その名前をセルアドレス代わりに使用する方法があります。 命名セルへの参照は常に絶対参照です。 命名セルまたは命名セルレンジを作成・編集するには、VP ADD RANGE NAME
メソッドを使用します。
以下の表は異なる記法による効果をまとめたものです:
例題 | 参照タイプ | 説明 |
---|---|---|
C5 | 相対 | 参照は相対的にセル C5 を指しており、参照が最初に使用されたセルが位置の基準となります。 |
$C$5 | 絶対 | 参照は絶対参照です。 どこで使用されるかにかかわらず、常にセル C5 を参照します。 |
$C5 | 複合 | 常にカラム C を参照しますが、行の参照は相対的で、参照が最初に使用されたセルを基準に決まります。 |
C$5 | 複合 | 常に 5行目を参照しますが、カラムの参照は相対的で、参照が最初に使用されたセルを基準に決まります。 |
セル名 | 絶対 | 参照は絶対参照です。 どこで使用されるかにかかわらず、常に 命名されたセルまたはレンジ を参照します。 |
ビルトインファンクション
スプレッドシートのファンクションとは、セルの値を計算する規定のフォーミュラのことで、関数とも呼ばれます。 入力したい関数の頭文字を入力すると、利用可能な関数と参照の一覧がポップアップメニューに表示され、必要な要素を選択することができます:
詳細や例題については SpreadJS's extented list of functions (英文) を参照ください。
4Dファンクション
4D View Pro では、4Dフォーミュラ を実行する 4Dカスタムファンクション を定義・使用することができます。 4Dカスタムファンクションを使用すると、4D View Pro ドキュメントの可能性が広がり、4Dデータベースとの強力な連携が可能になります。
4Dカスタムファンクションを使用すると、4D View Pro のフォーミュラ内で以下が利用可能になります:
- 4Dプロセス変数
- フィールド
- プロジェクトメソッド
- 4Dランゲージコマンド
- または、有効な 4D式
4Dカスタムファンクションは、4D View Pro エリアから 引数 を受け取り、値を返すことができます。
これらのカスタムファンクションは VP SET CUSTOM FUNCTIONS
メソッドを使って宣言します。 例:
$o:=New object
// 4D View Pro におけるファンクション名: "DRIVERS_LICENCE"
$o.DRIVERS_LICENCE:=New object
// プロセス変数
$o.DRIVERS_LICENCE.formula:=Formula(DriverLicence)
// テブルフィールド
$o.DRIVERS_LICENCE.formula:=Formula([Users]DriverLicence)
// プロジェクトメソッド
$o.DRIVERS_LICENCE.formula:=Formula(DriverLicenceState)
// 4Dコマンド
$o.DRIVERS_LICENCE:=Formula(Choose(DriverLicence; "Obtained"; "Failed"))
//4D式と引数
$o.DRIVERS_LICENCE.formula:=Formula(ds.Users.get($1).DriverLicence)
$o.DRIVERS_LICENCE.parameters:=New collection
$o.DRIVERS_LICENCE.parameters.push(New object("name"; "ID"; "type"; Is longint))
Hello World 例題
4Dプロジェクトメソッドを使って、4D View Pro エリアのセルに "Hello World" と表示させます。
- "myMethod" プロジェクトメソッドを作成し、次のコードを書きます:
#DECLARE->$hw :Text
$hw:="Hello World"
- 4D View Pro エリアが設置されたフォームを開く前に、以下のコードを実行します:
Case of
:(Form event code=On Load)
var $o : Object
$o:=New object
// "myMethod" メソッドから "vpHello" ファンクションを定義します
$o.vpHello:=New object
$o.vpHello.formula:=Formula(myMethod)
VP SET CUSTOM FUNCTIONS("ViewProArea";$o)
End case
-
4D View Pro エリアのセルに次を入力します:
すると、4D によって "myMethod "が呼び出され、セルの表示は次のようになります:
引数
プロジェクトのメソッドを呼び出す 4Dファンクションには、以下のシンタックスで引数を渡すことができます:
=METHODNAME(param1,param2,...,paramN)
methodName はこれらの引数を $1, $2...$N に受け取ります。
引数を渡さない場合でも ( ) の使用は必須です:
=METHODWITHOUTNAME()
VP SET CUSTOM FUNCTIONS コマンドを使用して宣言したファンクションの parameters コレクションを使って、引数の名前、型、数を宣言することができます。 オプションとして、minParams および maxParams プロパティにより、ユーザーから渡される引数の数を制御することができます。
サポートされている引数の型の詳細については、VP SET CUSTOM FUNCTIONS コマンドの説明を参照ください。
引数を宣言していない場合には、メソッドに値を順番に渡すことができ ($1、$2... に受け取られます)、 それらの型は自動的に変換されます。
日付およびオブジェクト引数は次のように扱われます:
- jstype の日付は、4Dコードでは 2つのプロパティを持つ オブジェクト として渡されます:
プロパティ | 型 | 説明 |
---|---|---|
value | 日付 | 日付値 |
time | 実数 | 数値 (秒単位) |
- オブジェクト引数は、
オブジェクト
内の .value プロパティに格納されて渡されます:
プロパティ | 型 | 説明 |
---|---|---|
value | オブジェクト | オブジェクト引数 |
戻り値
4Dプロジェクトメソッドは、$0 を介して 4D View Pro のセルフォーミュラに値を返すこともできます。 以下のデータ型の戻り値がサポートされています:
-
テキスト (4D View Pro 内で文字列に変換)
-
日付 (4D View Pro 内で JS日付型に変換 - 時間、分、秒 = 0)
-
時間 (4D View Pro 内で JS日付型に変換 - 日付は基準日、つまり 1899年12月30日)
-
ブール (4D View Pro 内でブールに変換)
-
ピクチャー (jpg,png,gif,bmp,svg, その他のタイプは png に変換) の場合、URI (data:image/png;base64,xxxx) が作成され、フォーミュラを実行した 4D View Pro のセルにおいて背景として使用されます。
-
次の 2つのプロパティを持つ オブジェクト (日付と時間の受け渡しを可能にします):
プロパティ 型