※おことわり
2025年4月時点の情報です。プリザンターのバージョンは 1.4.14.0 です。Google Chrome でやっています。
javascript,html,cssともに初心者です。調べながら、やってみながら、きっとこうすればいいんだ!という感じで書いていますので、間違っている、または効率的な書き方ではない可能性が大いにあります。間違ってるよ!とか、こうしたほうがいいよ!ということがありましたら、コメント等で教えていただけると大変ありがたいです。
1.はじめに
今回は、、、特にこれといった目的もなく、つらつらといろいろ計算式(拡張)をやってみたものになります。。。
2.計算式(拡張)でいろいろやってみる ~日付関連の計算~
(1)月末月初、翌月末などを出してみる
今日の日付から、月末や月初、翌月末などの日付を算出する、というのをエクセルではよくやります。なので、プリザンターでもやってみました。
サンプルです。
起票日(日付項目)に対して、当月1日・当月末日、前月1日・前月末日、翌月1日・翌月末日を表示する計算式。「対象」(計算結果を表示する項目)も、日付項目を指定しています。
[計算式]タブで新規作成し、計算方法は「拡張」を選択します。
計算のもととなる「起票日」は自動ポストバックをオンにしています。
(自動ポストバック等については、前回、前々回の記事に書いています。)

以下、計算式に入力した関数です。
当月1日 | $DATE($YEAR(起票日), $MONTH(起票日), 1) |
当月末日 | $EOMONTH(起票日, 0) |
前月1日 | $DATE($YEAR(起票日) , $MONTH(起票日) -1 , 1) |
前月末日 | $EOMONTH(起票日, -1) |
翌月1日 | $DATE($YEAR(起票日), $MONTH(起票日)+1, 1) |
翌月末日 | $EOMONTH(起票日, 1) |
出力イメージ

だから何って。。。なにかにつかうことあるかなぁ。
$DATE, $YEAR, $MONTH, $EOMONTH
(2)日付の差を出す
「開始日」から「締切日」の日数を「日数」に出力する計算式。(いずれも日付項目を使用)
日にちの乖離を出したいので第三引数に ‘D’ を指定しています。月の乖離を計算したい場合は ‘M’ 、年の乖離を計算したい場合は ‘Y’ を指定します。
開始日と締切日のいずれにも日付が入っている場合のみ日数を計算し、そうでない場合は0を出力するようにしています。
なお、「エラーを出力する」にチェックを入れている場合、第一引数より第二引数の日付が前になっている場合、エラーとなります。(この例の場合「締切日」が「開始日」より前の日付の場合)
「エラーを出力する」にチェックを入れていない場合は、計算が行われません。エラーを回避したい場合は $IFERROR も組み合わせてエラーを回避します。
$IF($AND(開始日 != "", 締切日 != ""), $DATEDIF(開始日, 締切日, 'D') , 0)

今日の日付から、締切日までの日数を算出する場合は以下。$IFERRORで締切日が入ってなかった場合、締切日が当日日付より前の場合は 0 を出力するようにしています。
$IFERROR($DATEDIF($TODAY(), 締切日, 'D'), 0)
3.年齢を算出
$DATEDIF ですね!
$DATEDIF(生年月日,$TODAY(),'Y')
[生年月日] は日付項目です。
出力先は [年齢] 数値項目としました。
今日の日付を起点に年齢を算出しています。
スクリプトで年齢を計算するのは大変そうだな、と思ったので、計算式でサクッと年齢を出せるのはいいな、と思いました。
FAQ:編集画面を登録・更新する際に誕生日から年齢を自動計算したい
ちょっと気になるのは、入力した日はよいのですが、その後レコードを更新しないと、DB上ずーっと同じ年齢なので、ちょっと誤解を呼びそうですね。
こんな時に使えるかな、と思ったのは「入力された[生年月日]から申請時の年齢をチェックして、15歳未満だったら申込不可」とかチェックに使う。等ですかね。
4.$REPLACE 関数を使ってみる
REPLACE関数って。Excelでも使ったことがなくて。
構文
$REPLACE(対象の文字列,開始位置,文字数,置換文字列)
対象の文字列の 何文字目から(開始位置) 何文字分を(文字数) 指定した文字列(置換文字列)に置き換える。
だそうですね。とりあえず、やってみます。
分類項目を「登録番号」と「登録番号(表示用)」と二つ用意しました。
「登録番号」に入力した番号の3文字目から5文字分を「*」に置換して「登録番号(表示用)」に表示したいと思います。
計算式を設定します。
$REPLACE(登録番号, 3, 5,"*****")
結果:3文字目から5文字分「34567」が「*****」に置き換わりました。

$REPLACE の第三引数「文字数」の意味が分からなかったのですが、こちらの記事で理解できました(excelの関数の記事だけど)。ありがとうございました。
文字列を置き換えるREPLACE関数とSUBSTITUTE関数
3文字目から1文字分を「*****」に置き換える。
$REPLACE(登録番号, 3, 1,"*****")
結果:3文字目の「3」が「*****」に置き換わりました。1文字分が*5文字分になったのでちょっと長くなっていますね。

3文字目から7文字分を「*****」に置き換える。
$REPLACE(登録番号, 3, 7,"*****")
3文字目から7文字分の「3456789」が「*****」に置き換わりました。7文字分が*5文字分になったので、ちょっと短くなっていますね。

1文字目から入力文字数分「*****」に置き換える
$REPLACE(登録番号, 3, $LEN(登録番号) - 2, "*****")
3文字目から8文字分が「*****」に置き換わっていますね。

5.最後に
今回は、つらつらとやってみたのですが、Excelで使ったことのないReplace関数の勉強もできたので、満足。次回、プロセスに「計算式」があることを発見したので、やってみようと思います。
6.参考文献、記事
公式マニュアル
テーブルの管理:計算式(既定)
テーブルの管理:計算式(拡張)
計算式(拡張)の関数一覧
計算式(拡張)の関数で使用する論理式
参考とさせていただいた記事
文字列を置き換えるREPLACE関数とSUBSTITUTE関数
内部リンク
【pleasanter】計算式(規定・拡張)についてまとめてみた
【pleasanter】計算式(拡張)活用サンプル①~リマインダーの日付として利用する~
【pleasanter】計算式(拡張)活用サンプル②~入力チェックに利用する~
【pleasanter】計算式(拡張)活用サンプル③~タイトルを自由自在に~
【pleasanter】計算式(拡張)活用サンプル④~フィルタ項目として利用する~
【pleasanter】計算式(拡張)活用サンプル⑤~プリザンターでeラーニングテスト~
もう読みましたか?プリザンターの概要、インストール方法から基本操作方法、導入事例、サンプル等、役に立つ情報が満載でしたよ!
コメント