関数呼び出し

設計者 管理者

式では、組み込まれた関数を呼び出すことができます。関数は複数の引数をもとに(引数がない関数もあります)、ひとつの値を返します。返された値をもとにさらに計算や条件判定を行うことができます。
使用できる関数は、式の種類により異なります。

関数名は @ で始まります。
  @some_function (1)
1 some_function という名前の関数を引数なしで呼び出しています。 @some_function() と書いても同じです。
引数は () で括って渡します。引数が複数ある場合は , で区切ります。
  @other_function(1, "a") (1)
1 other_function という名前の関数を 1, a という引数を添えて呼び出しています。

使用できる関数は、以下の通りです。

全ての方言で使用できる関数

数値計算関数

関数 引数
(省略可の場合、[] で囲む)
機能

@abs
(fusion_place >= 10.0)

第 1 引数

数値

数値の絶対値を返す。

引数が数値でない場合はそのまま返す。

@max
(fusion_place >= 10.0)

任意個の引数

引数のうち、最大の数値を返す。

引数がゼロ個の場合、また、引数中に数値がない場合は 0 を返す。

@min
(fusion_place >= 10.0)

任意個の引数

引数のうち、最小の数値を返す。

引数がゼロ個の場合、また、引数中に数値がない場合は 0 を返す。

@round

第 1 引数

数値

第 2 引数

数値: 桁数

数値の端数部分を四捨五入して返す。四捨五入の切り捨ては負の無限大に向かってではなくゼロに向かって行われ、切り上げは、数値が正数の場合、無限大に向かって行われ、負数の場合、負の無限大に向かって行われます。例えば、-4.5 の小数第 1 位を四捨五入すると、-4 ではなく、-5 となります。

桁数の指定方法は以下の通り:

  1. 整数部のみ残す(小数第 1 位四捨五入)――桁数は 0

  2. 小数第 1 位まで残す(小数第 2 位四捨五入)――桁数は 1

  3. 小数第 2 位まで残す(小数第 3 位四捨五入)――桁数は 2

  4. 10 の位以上を残す(1 の位を四捨五入)――桁数は -1

  5. 100 の位以上を残す(10 の位を四捨五入)――桁数は -2

桁数には、-14 以上 4 以下 の整数を指定可能です。

@round_up

@round と同じ)

数値の端数部分を切り上げて返す。切り上げは、数値が正数の場合、無限大に向かって行われ、負数の場合、負の無限大に向かって行われます。
桁数の指定方法は @round と同じです。

@round_down

@round と同じ)

数値の端数部分を切り捨てて返す。切り捨ては、数値の正負を問わず、ゼロに向かって行われます。
桁数の指定方法は @round と同じです。

@multiply_fraction

第 1 引数

数値: 乗数

第 2 引数

数値: 被乗数分子

第 3 引数

数値: 被乗数分母

計算途中で端数処理を行わずまた桁あふれも起こさずに a * b / c を計算する。最後に小数第 5 位が四捨五入され、小数 4 位までの計算結果が得られる。

第 1 引数~第 3 引数が、その順に、上記の a ~ c に対応します。

文字列処理関数

関数 引数
(省略可の場合、[] で囲む)
機能

@is_numeric

第 1 引数

文字列

文字列が数値として解釈可能か判定する。解釈可能である場合、「True」を返し、以外の場合、「False」を返す・

@numeric

第 1 引数

文字列

文字列を数値に変換する。

@left

第 1 引数

文字列

第 2 引数

文字数

文字列の左 n 文字を取りだす。

指定された文字数が負数の場合は、文字列左から、(文字列長+文字数)分の文字列を取りだす。例えば文字列長が 5 で、文字数が -2 ならば、左から 3 文字を取り出す(右から 2 文字を残す)。

@right

(同上)

文字列の右 n 文字を取りだす。

指定された文字数が負数の場合は、文字列右から、(文字列長+文字数)分の文字列を取りだす。例えば文字列長が 5 で、文字数が -2 ならば、右からから 3 文字を取り出す(左から 2 文字を残す)。

@mid

第 1 引数

文字列

第 2 引数

数値: 開始位置

第 3 引数

文字数

文字列から部分文字列を取りだす。開始位置は 1 から始まる。

@trim
(fusion_place >= 10.0)

第 1 引数

文字列

与えられた文字列前後の空白を除去した文字列を返す。

@len

第 1 引数

文字列

文字列の長さを返す。

@text

第 1 引数

数値

第 2 引数

数値: 書式パターン

[第 3 引数]

数値: 位取り

数値を書式パターンに従って整形した文字列を返す。

書式パターンは、フォームの 金額及び数値の表示方法 で使用できるパターンと同じ記法に従う。

位取りは、0 ならそのまま、1 なら十単位、3 なら千単位というように、10 に対する累乗数を指定する(指定しなければ 0 とみなす)。

@repeat

第 1 引数

文字列

第 2 引数

数値: 繰り返し回数

第 1 引数で指定された文字列を、第 2 引数で指定された回数繰り返した文字列を返す。第 2 引数がゼロ以下ならば空文字列を返す。

@find
(fusion_place >= 10.0)

第 1 引数

文字列: 検索文字列

第 2 引数

文字列: 対象文字列

[第 3 引数]

数値: 開始位置

検索文字列が対象文字列中に現れる最初の位置を返す。大文字小文字は区別される。

検索文字列に空文字列を指定した場合、開始位置直後で一致したとみなされ、開始位置が返される。

開始位置には、検索を開始する位置を指定する(先頭は1)。省略時は1と見做される。

返り値は、開始位置によらず、先頭を起点とする位置である。また、対象文字列が見つからなかった場合はエラー値#VALUE!が返される。

@substitute

第 1 引数

文字列

第 2 引数

文字列: 被置換文字列

第 3 引数

文字列: 置換文字列

文字列中に現れる特定の部分文字列をすべて置換する。

@split

第 1 引数

文字列

第 2 引数

文字列: 区切文字列

第 3 引数

数値: インデックス

文字列を区切文字列で区切った場合の、インデックス番目の部分文字列を返す。インデックスは 1 始まり。

@num_of_chars_of_type

第 1 引数

数値: 文字種を表す整数

第 2 引数

文字列: 検査対象文字列

文字列内に、指定された文字種の文字が何個あるかカウントし、その個数を返す。

第 1 引数は、文字種を表す整数。以下のいずれか、又はその和を指定する:

1

数字

2

英大文字

4

英小文字

8

空白文字

和を指定した場合、いずれかの文字種に属する文字数の合計を返す。

第 2 引数には、検査すべき文字列を指定する。

例えば [PRO_CD] で指定されるセルに英数字しか含まれないことを判定するには以下のようにする:

  @num_of_chars_of_type(1+2+4, [PRO_CD].Text)=@len([PRO_CD].Text)

@num_of_listed_chars

第 1 引数

文字列: 検索対象文字を列挙した文字列

第 2 引数

文字列: 検査対象文字列

文字列内に、指定された文字が何個あるかカウントし、その個数を返す。

第 1 引数は、検査すべき文字を列挙した文字列。同じ文字を複数回含めるとその出現回数だけ重複してカウントするので留意する。

第 2 引数は、検査すべき文字列を指定する。

例えば、 [PRO_CD] で指定されるセルの文字列値に含まれる -+ の数をカウントするには、以下のようにする:

  @num_of_listed_chars( "-+", [PRO_CD].Text)

@asc
(fusion_place >= 12.0)

第 1 引数

文字列: 変換対象の文字列

文字列内の全角文字を半角文字に変換。全角の英数字記号やカタカナが対象

第 1 引数は、変換対象の文字列。

例えば、[PRO_CD] で指定されるセルの文字列値に含まれる全角文字を 半角文字に変換する場合、以下のようにする。

  @asc( [PRO_CD].Text)

@jis
(fusion_place >= 12.0)

第 1 引数

文字列: 変換対象の文字列

文字列内の半角文字を全角文字に変換。半角の英数字記号やカタカナが対象

第 1 引数は、変換対象の文字列。

例えば、[PRO_CD] で指定されるセルの文字列値に含まれる半角文字を 全角文字に変換する場合、以下のようにする。

  @jis( [PRO_CD].Text)

日付計算関数

関数 引数
(省略可の場合、[] で囲む)
機能

@date

第 1 引数

文字列 または 数値: 西暦年度

第 2 引数

文字列 または 数値 : 月番号

第 3 引数

文字列 または 数値: 日

[第 4 引数]

文字列 または 数値: 月オフセット

日付連番(整数値)を返す。日付連番は、Excel の日付連番と互換性がある[1]。当関数の引数に与える値は数値(例: 2020)でも文字列(例: "2020")でも可。

月番号と月オフセットの組み合わせにより、暦年と異なる会計年度の場合も簡単に日付連番を求めることができる。

例) 3 月決算の場合の 2020 年度第 4 月 1 日(=2020/7/1)の日付連番

  @date(2020,4,1,3)

3 月末決算では、年度末の月が後に 3 ヶ月ずれるため、月オフセット = 3。

例) 6 月決算の場合の 2021 年度第 4 月 1 日(=2020/10/1)の日付連番

  @date(2020,4,1,-6)

6 月末決算では、年度末の月が前に 6 ヶ月ずれるため、月オフセット = -6。

月オフセットは、指定しなければ 0 とみなされる。

西暦年度・月番号・日・月オフセットのいずれかに誤りがあるか、それらの組み合わせに誤りがあって正しい日付を得られない場合、エラー値「#VALUE」が返される。


1. ただし、Excel は 1900 年を誤ってうるう年として日付連番を計算しているため、1900/2/28 以前に関しては、当関数が返す値と互換性がない。

@year

第 1 引数

数値: 日付連番

日付連番によってあらわされる日付の 歴年 を返す。

@month

第 1 引数

数値: 日付連番

日付連番によってあらわされる日付の 歴月 を返す。

@day

第 1 引数

数値: 日付連番

日付連番によってあらわされる日付の、月内での を返す。

@day_of_week

第 1 引数

数値: 日付連番

日付連番によってあらわされる日付の 曜日 を返す。

1

月曜日

2

火曜日

3

水曜日

4

木曜日

5

金曜日

6

土曜日

7

日曜日

@last_day_of_month

第 1 引数

数値: 日付連番

日付連番によってあらわされる日付が属する月の月末日の日付連番を返す(閏年を考慮)。

@week_anchor

第 1 引数

数値: 帰属期間開始日(日付連番)

第 2 引数

数値: 週の開始曜日(月曜日: 1 日曜日: 7)

[第 3 引数]

数値: 週の帰属期間決定基準曜日(同上)

帰属期間開始日で始まる期間を週別に分割した場合の、週並び開始日、すなわち第 1 週の最初の日の日付連番を返す。

帰属期間開始日

週に分割したい期間(年、月等)の第 1 日の日付連番を指定。

週の開始曜日

週が何曜日で始まるものとして週を区切るかを指定。

週の帰属期間決定基準曜日

帰属期間内で最初のこの曜日が含まれる週を、第 1 週とするように週を区切ることを指定。指定しない場合、帰属期間開始日が含まれる週を第 1 週とする。

@week_num

第 1 引数

数値: 週並び開始日(日付連番)

第 2 引数

数値: 判定対象日(日付連番)

[第 3 引数]

数値: 次の週並び開始日(日付連番)

週並び開始日から始まる週並びで、判定対象日が含まれる週の番号を返す。
最初の週の週番号は 1 となる。

「次の週並び開始日」を指定した場合、その日以降は次の週並び(次の年など)に属するとみなされる。その場合、0 が返される。

論理関数

関数 引数
(省略可の場合、[] で囲む)
機能

@is_error
(fusion_place >= 10.0)

第 1 引数

任意の値

第 1 引数がエラー値かどうかを判定する。エラー値である場合、「True」を返し、以外の場合、「False」を返す。

※第 1 引数を計算式ではなく、セル範囲指定子[A]を設定した場合、そのセル範囲の値がエラーになっても関数の結果は「True」になりません。セルの値がエラー値なのであって、セル範囲そのものはエラー値ではないからです。[A].value、[A].totalなどメンバ関数を明示的に指定ください。

@iferror

第 1 引数

任意の値

第 2 引数

エラー時の値

第 1 引数がエラー値の場合、第 2 引数を返す。以外の場合、第 1 引数を返す。

例)

  @iferror([A]/[B], "-")

上記例では、 [B] の値([B].total)がゼロで、ゼロ割が生じた場合、- が返される。

エラー値は、数値に関する #DIV!/0, #VALUE の他、読み取り禁止されているセルの値 #N/A も含まれる。

※第 1 引数を計算式ではなく、セル範囲指定子[A]を設定した場合、そのセル範囲の値がエラーになっても関数の結果は「True」になりません。セルの値がエラー値なのであって、セル範囲そのものはエラー値ではないからです。[A].value、[A].totalなどメンバ関数を明示的に指定ください。

メンバ選択式のみで使用できる関数

relative_position 関数は、会計年度と相対期間の組み込みメンバリストで使用するために用意されています。relative_position 関数を使用する機会は少ないと思われますが、使用する必要がある場合には、これらの組み込みメンバリストも参考にしてください。

メンバ選択式のみで使用できる depth 関数と height 関数は、フォームの列・行計算式・セル計算式などで使える引数付きの同名称関数とは異なる別の関数ですのでご注意ください。

関数 引数
(省略可の場合、[] で囲む)
機能

@relative_position

(なし)

視点メンバを基準として、現在のメンバの相対位置を返す。

会計年度・相対期間ディメンションのメンバ選択式のみで使用可能。

@depth
(fusion_place >= 12.1)

(なし)

メンバ選択式で検査中のメンバ(現在のメンバ)の深さを返す。深さの計算の起点は、メンバリストの起点メンバである(メンバリストの起点メンバの深さが 0 となる)。

メンバ選択式でスキップされたメンバも、深さの計算では考慮される。

@height
(fusion_place >= 12.1)

(なし)

メンバ選択式で検査中のメンバ(現在のメンバ)の高さを返す。高さの計算の起点は、メンバツリーの最下位のメンバである(最下位メンバの高さが 0 となる)。最下位以外のメンバの高さは、子メンバの高さの最大値+1となる。

メンバ選択式でスキップされたメンバも、高さの計算では考慮される。

現在のメンバ視点メンバ の詳細は メンバ変数 をご参照下さい。

フォームの列・行計算式・セル計算式などで使用できる関数

これらの関数の使用可能箇所の詳細は テキスト式の方言一覧 をご参照下さい。
関数 引数
(省略可の場合、[] で囲む)
機能

@depth

第 1 引数

ディメンションオブジェクト または 文字列

対象列・行・セルにおいて、第 1 引数で指定されたディメンションについての 現在のメンバ が縦軸又は横軸のメンバリストから供給されている場合、そのメンバのそのメンバリスト内での深さ(0 始まり)を返す。当該ディメンションについて 現在のメンバ がないか、又はそれがメンバリストから供給されていない場合、0 が返される。

深さは、メンバツリー上でメンバリストの起点メンバ配下に含まれるがメンバリストに含まれないメンバはスキップしてカウントされる。例えば、A > B > C という 3 階層のメンバがあって、メンバリストの起点 A と、その孫 C だけがメンバリストに含まれ、B はメンバリストに含まれない場合、C の深さは 1 とされる(A の深さは 0 である)。

第 1 引数が文字列の場合、ディメンションラベルとみなされる。

@height

第 1 引数

ディメンションオブジェクト または 文字列

対象列・行・セルにおいて、第 1 引数で指定されたディメンションについての 現在のメンバ が縦軸又は横軸のメンバリストから供給されている場合、そのメンバのそのメンバリスト内での高さ(0 始まり)を返す。当該ディメンションについて 現在のメンバ がないか、又はそれがメンバリストから供給されていない場合、0 が返される。

高さは、メンバツリー上でメンバリストの起点メンバ配下に含まれるがメンバリストに含まれないメンバはスキップしてカウントされる。例えば、A > B > C という 3 階層のメンバがあって、メンバリストの起点 A と、その孫 C だけがメンバリストに含まれ、B はメンバリストに含まれない場合、A の高さは 1 とされる(C の高さは 0 である)。

メンバリスト内でメンバが二か所以上に出現する場合、高さは出現位置ごとに計算される。

第 1 引数が文字列の場合、ディメンションラベルとみなされる。

関数 引数
(省略可の場合、[] で囲む)
機能

@participant_label

(なし)

データの読み取り/書き込みを行っている業務責任単位自身のラベル。

フィールド値算定式で使用できる関数

関数 引数
(省略可の場合、[]で囲む)
機能

@field_key

[第 1 引数]

数値: フィールド番号

現在処理中の値フィールドに対して指定された、値フィールドキー。ひとつの値フィールドに対して、値フィールドキーは、カンマで区切っていくつでも指定できる。@field_key の第 1 引数は、その何番目のキーを返すべきかを指定する(1 始まり)。

省略された場合、1 が指定されたものとみなされる。

0 以下、もしくは指定されたフィールドキーの個数を超える番号が指定された場合、また、整数でない値が指定された場合、当関数は空白文字列を返す。