ブログ

計算プラグインで日付の計算をしてみよう!

みなさん、計算プラグインはお使いでしょうか。

計算プラグインではExcelライクな関数が100種類以上使えるため、様々な計算を行うことができます。(サポート関数についてはこちら

今回は日付の計算でよく使われる

  • 指定日のnか月後の月末日の計算
  • 指定日のnか月後の1日の計算
  • 開始日から終了日までの年数の計算
  • 指定日の曜日の計算
  • 指定日の和暦の計算

について 、計算プラグインで実現する方法についてご紹介します。

 

ではまず初めに月末日の計算についてです。

■月末日を計算しよう

Excel関数をご存じの方はすぐにお気づきかと思いますが、EOMONTH関数を使っていきます。

使い方は簡単で、

kintone アプリの設定画面で、フォームに

  • 結果フィールド(日付型):計算結果を表示したいフィールド。※必須
  • 日付フィールド(日付型):計算に使う指定日のフィールド。※任意:計算式に直接入力するのであればフィールドは不要
  • 月数フィールド(数値型):計算に使う月数のフィールド。※任意:計算式に直接入力するのであればフィールドは不要

を設定します。

次に、アプリの設定画面から計算プラグインを追加します。(プラグインの追加方法についてはこちら

最後に、計算プラグインの設定画面で以下の様に設定します。

  • 計算式設定フィールド:結果フィールドを設定
  • 計算式(Excelと違い、式の先頭に = は必要ありません):

例1:

EOMONTH("2024-08-15", 1)

例2:

EOMONTH(日付フィールド, 月数フィールド)

以上です。

 

例1であれば、結果フィールドは "2024-09-30" と表示されます。

 

計算式が

EOMONTH("2024-08-15", -1)

であれば、結果フィールドは "2024-07-31" と表示されます。

また、例2ですが、このままの式を使用すると数値フィールドに値が入っていない場合にエラーになります。

実際使う際には

EOMONTH(日付, IF( ISBLANK(月数), 0, 月数) )

といった式で月数が未設定の場合には0とすれば、エラーが表示されることはありません。

計算式はフィールド値でも直接入力でも構いませんので、

例3:

EOMONTH("2024-08-15", 月数フィールド)

例4:

EOMONTH(日付フィールド, 1)

としていただいても問題ありません。

 

■月初日を計算しよう

もう、おわかりの方もおられるかもしれませんが、

月初日というのは月末日の翌日なので、

計算式を

例1:

EOMONTH("2024-08-15", 1) + 1

例2:

EOMONTH(日付フィールド, 月数フィールド) + 1

例3:

EOMONTH("2024-08-15", 月数フィールド) + 1

例4:

EOMONTH(日付フィールド, 1) + 1

とするだけですね。

「指定日のnか月後の1日」とする場合は、月数にご注意ください。

例1で言えば、翌月1日(2024-09-01)を求めたい場合は

EOMONTH("2024-08-15", 0) + 1

※0か月後の末日(2024-08-31)+1日

となります。

 

ここでおまけをひとつ。

■日付の計算結果を文字列(1行)に表示してみよう

計算式設定フィールドで文字列(1行)を指定して、計算式がそのままですと日付のフォーマットではなく数値で表示されてしまいます。

これを防ぐためには、

例5:

DATESTRING(EOMONTH("2024-08-15", 1) + 1)

のように、DATESTRING関数をご利用ください。文字列(1行)フィールドでも "2024-10-01" のように日付フォーマットで表示されます。

 

■年数を計算してみよう

年齢や入社年数など、開始日から終了日までの年数を計算してみましょう。

※サンプルとして社員名簿アプリを使用しています。

年齢、入社年数のフィールドを追加しました。

社員一覧にも年齢と入社年数が表示されるように設定します。

以下がプラグインの設定です。

1. 計算式設定フィールドに以下のような計算式を設定します。

例6:

DATEDIF(誕生日, 確認日, "Y")

例7:
DATEDIF(入社日, 確認日, "Y")

  • DATEDIF関数は1つ目の日付と2つ目の日付の日数、月数、または年数を計算します。"Y"を指定することで年数を計算します。

 確認日は、 TODAY関数を指定するとよいでしょう。

2.計算プラグインの 「一括再計算設定」で「一括再計算を有効にする」にチェックを入れます。

 ※必要に応じて一括再計算を実行するユーザーの権限設定を行ってください。

 

これで準備ができました。

 

一覧画面で「一括再計算」を行うことで、年数の計算結果が最新になります。

 

次は曜日の計算です。

■曜日の計算をしよう

日付から曜日を計算してみましょう。(以前の記事はこちら

計算プラグインの設定で以下のように設定します。

計算式設定フィールド:文字列(1行)のフィールド(計算結果が文字列になるため)

計算式:

SWITCH(WEEKDAY(日付), 1, "日", 2, "月", 3, "火", 4, "水", 5, "木", 6, "金", "土")

  • WEEKDAY関数に日付を渡すと1~7の数字を返します。(デフォルトでは日曜日が1、土曜日が7になっています)
  • SWITCH関数にWEEKDAY関数の結果を渡して日、月、火、水、木、金、土を文字列で返します。

 

追記:

SWITCH関数の代わりにCHOOSE関数を使用しても曜日の計算ができます。

CHOOSE(WEEKDAY(日付), "日", "月", "火", "水", "木", "金", "土")

  • CHOOSE関数は第1引数の値(インデックス)に応じて、第2引数以降の値を返します。
    上記の場合、WEEKDAY関数の戻り値が、1なら"日"、7なら"土"を返します。

 

設定は以上となります。

 

日付が "2024-08-15" の場合は、曜日に "木" と表示されます。

 

最後に和暦変換です。

■和暦計算をしてみよう

和暦の判定は対象の日付を各和暦の開始日と比較して行います。

  • 明治以前:日付 < 1868/09/08
  • 令和:日付 ≧ 2019/05/01
  • 平成:日付 ≧ 1989/01/08
  • 昭和:日付 ≧ 1926/12/25
  • 大正:日付 ≧ 1912/07/30
  • 明治:上記以外

和暦年は西暦年から 各和暦の開始年-1 を減算します。

  • 令和年:西暦年 - 2018
  • 平成年:西暦年 - 1988
  • 昭和年:西暦年 - 1925
  • 大正年:西暦年 - 1911
  • 明治年:西暦年 - 1867

月、日の表現方法についてはここでは割愛します。以下の計算式を参照ください。

計算プラグインの設定

計算式設定フィールド:文字列(1行)

計算式:

IF(DATEVALUE(日付) < DATE(1868, 9, 8), "明治より前", IF(DATEVALUE(日付) >= DATE(2019, 5, 1), "令和" & (YEAR(日付) - 2018), IF(DATEVALUE(日付) >= DATE(1989, 1, 8), "平成" & (YEAR(日付) - 1988), IF(DATEVALUE(日付) >= DATE(1926, 12, 25), "昭和" & (YEAR(日付) - 1925), IF(DATEVALUE(日付) >= DATE(1912, 7, 30), "大正" & (YEAR(日付) - 1911), "明治" & (YEAR(日付) - 1867))))) & "年" & MONTH(日付) & "月" & DAY(日付) & "日")

  • DATE関数は指定した年、月、日を数値に置き換えています。(比較用)
  • DATEVALUE関数はフィールドから取得した日付を数値に置き換えています。(比較用)
  • YEAR関数はフィールドから取得した日付の西暦年を取得しています。
  • MONTH関数はフィールドから取得した日付の月を取得しています。
  • DAY関数はフィールドから取得した日付の日を取得しています。
  • 文字列結合と和暦年の計算を同時に行うとエラーになるので、括弧で括って和暦年の計算を先に行い、その後に和暦と年を文字列結合します。

設定は以上になります。

このように和暦が表示されます。

応用として、表示形式を変更したり、

IF(DATEVALUE(日付) < DATE(1868, 9, 8), "明治より前", IF(DATEVALUE(日付) >= DATE(2019, 5, 1), "R" & (YEAR(日付) - 2018), IF(DATEVALUE(日付) >= DATE(1989, 1, 8), "H" & (YEAR(日付) - 1988), IF(DATEVALUE(日付) >= DATE(1926, 12, 25), "S" & (YEAR(日付) - 1925), IF(DATEVALUE(日付) >= DATE(1912, 7, 30), "T" & (YEAR(日付) - 1911), "M" & (YEAR(日付) - 1867))))) & "/" & MONTH(日付) & "/" & DAY(日付) )

和暦日付と曜日を組み合わせることもできます。

IF(DATEVALUE(日付) < DATE(1868, 9, 8), "明治より前", IF(DATEVALUE(日付) >= DATE(2019, 5, 1), "令和" & (YEAR(日付) - 2018), IF(DATEVALUE(日付) >= DATE(1989, 1, 8), "平成" & (YEAR(日付) - 1988), IF(DATEVALUE(日付) >= DATE(1926, 12, 25), "昭和" & (YEAR(日付) - 1925), IF(DATEVALUE(日付) >= DATE(1912, 7, 30), "大正" & (YEAR(日付) - 1911), "明治" & (YEAR(日付) - 1867))))) & "年" & MONTH(日付) & "月" & DAY(日付) & "日(" & CHOOSE(WEEKDAY(日付), "日", "月", "火", "水", "木", "金", "土") & ")")

 

如何だったでしょうか。

ぜひ、計算プラグインをご活用ください。

 

ブログ一覧に戻る