🐣

30分で切り捨て切り上げを表示するスプレッドシート関数

2023/04/22に公開

背景・概要

スプレッドシートで「30分未満であれば切り捨て、30分以上であれば切り上げ」の関数を考えます。
これは、入退室を管理する時に、変わった計算をする必要があった為、作ってみました。

条件

B4のセルに時間を入れるとします。

  • B4が空でない場合は空欄
  • B4が空でない場合には、B4の分の値が30分未満であれば切り捨て、30分以上であれば切り上げ

スプレッドシートの関数

=IF($B4="", "", IF(MOD($B4, TIME(0,60,0)) < TIME(0,30,0), FLOOR($B4, TIME(0,30,0)), CEILING($B4, TIME(0,30,0))))

表示形式を「時間」に変更する必要があります。

ChatGPTの説明

この関数を説明してください。
とすると、下記の内容が返ってきました。

この式は、Excelの関数である「IF」、「MOD」、「FLOOR」、「CEILING」を使用しています。

式の意味を簡単に説明すると、セルB4に値が入力されている場合は、30分単位で四捨五入または切り捨てされた値を表示し、B4が空白である場合は空白を表示するというものです。

具体的には、まず式の中で「IF」関数が使用されています。「IF」関数は、条件式が真の場合に指定した値を、偽の場合に別の値を返します。
この場合、条件式は「$B4=""」となっており、セルB4が空白である場合に真となります。
真の場合は空白が表示され、偽の場合は式の中に入ります。

次に、式の中で「MOD」関数が使用されています。「MOD」関数は、除算の余りを計算します。
この場合、セルB4の値が「TIME(0,60,0)」で割り切れない場合に、30分単位で四捨五入または切り捨てされた値を計算します。

そして、式の中で「FLOOR」関数または「CEILING」関数が使用されます。
これらの関数は、「指定した数値を下げた値または上げた値」に切り替えます。
この場合、「FLOOR」関数はセルB4の値を30分単位で切り捨て、「CEILING」関数はセルB4の値を30分単位で切り上げます。

つまり、この式は、セルB4が30分単位で四捨五入または切り捨てされた値を表示するためのものです。

おわりに

ChatGPTを活用することで、関数をすぐに作れるようになりました。
調べながら苦労して作っていた時代が懐かしくなります。

GitHubで編集を提案

Discussion