一定期間内に提出されたリクエストのカウント方法

Smartsheet Community に表記の質問がありましたので、方法を考えてみました。

質問の内容

質問の内容は、
「Smartsheet のフォームを使用して、ユーザーがチームにリクエストを送信できるようにしています。リクエストが送信された時間(月/日/年/時間帯)を自動的に生成する列があります。チームのシフト時間を正当化するために、1日の各時間帯にどれだけのリクエストがあるかをカウントできるようにする必要があります。午前8時から午前9時、午前9時から午後10時など、時間帯ごとに何件のリクエストを受け取ったかを計算する方法はありますか?」
というものです。

例えば、コールセンターなどのカスタマーセンターで、時間帯によってコール数や問合せ数が異なるため、繁閑にあわせシフトを引く、その場合に、スタッフに納得いただけるよう、1日の各時間帯にどれだけのリクエストがあるかをカウントする、といった場面でないかと思います。

リクエストが送信された時間(月/日/年/時間帯)を自動的に生成する列

これはCreated(作成時間)システム列を使うのが通常です。

Created Column
作成日時の列

作成時間のデータから時間を取り出す

MID関数を使って作成日時から時間の部分を取り出す
MID関数を使って作成日時から時間の部分を取り出す

次に、22/12/10 15:48 といった作成日時のデータから時間の15(24時間表示の場合)を取り出す必要があります。

Smartsheetには「Created(作成日時)」から時間部分を抽出する機能がないので、「MID」関数などの文字操作関数を使って時間文字列を引っ張ってくる必要があります。(なお、年はYEAR( )、月はMONTH( )で取り出せます。)

例えば以下のような式です。

=VALUE(MID(Created@row, FIND(” “, Created@row) + 1, FIND(“:”, Created@row) – FIND(” “, Created@row) – 1)))

文字列から特定の文字を引っ張ってくるMID( )関数の構文は、
MID( 文字列 開始位置 文字数 )
なので
まず、作成日時のフォーマットは 22/12/10 15:48 のような形で、空白の1字後から始まるので開始位置をFIND(” “, Created@row) + 1 で求めます。
次に、時間の部分は「空白」と「:」の間なので、文字数を
FIND(“:”, Created@row) – FIND(” “, Created@row) – 1
で求めます。

以上をMIDに代入したのが上の式ですが、操作が簡単になるようVALUE( )関数で数字に置き換えます。(日本は関係ありませんが、米国のように12/14/22 9:36 AM といった形式で作成時間が表示される場合は、PMの場合に、上で求めた時間に12を足す必要があります。)

特定の期間中の「リクエスト」の数を数える

次に、「COUNTIF」関数は、特定の期間中の「リクエスト」の数を数えます。

これは例えば以下のような式となります。
なお、{Hour}の部分はリクエストのシートを参照しています。

=COUNTIF({Hour}, [24時間形式]@row)

範囲の参照例
範囲の参照例

全体の構造をダッシュボードで表示したもの

コメントを残す