見出し画像

Googleフォーム&スプレッドシートでカンパニーの検温表作成

ここは、小~中劇場規模の舞台公演(主に演劇)で制作やチケット管理業務をしてきた私が培ってきた事を綴るnoteです。
このささやかな知識で制作者の生産性が少しでも向上されれば幸いです。

様々な生活様式の変化を余儀なくされる昨今ですが、演劇の現場でも皆様日々、感染症対策や体調管理に気を遣って稽古や本番にあたっているかと思います。
カンパニーメンバー(キャスト&スタッフ)に稽古~公演期間中、毎朝検温し体温を報告する事をお願いしている公演も多いのではないでしょうか。
今回は、制作者が毎朝の検温管理がしやすくなるフォーム&スプレッドシートを作成してみます。

フォームで検温アンケートを取るのは手軽ですが、時系列で表示されていくので、関係者の人数が多いとその日誰が登録していないかを確認しづらいかと思います。
ここではカンパニーメンバーの一覧表を作成し、日々登録されていく体温を表にまとめていきたいと思います。

※関数について説明はシンプルにしてあります。興味を持った関数の詳しい使用方法は別途お調べ下さい。

フォーム&スプレッドシートの作成

まずはフォームを作ります。
フォームの詳しい作成方法はこちらのnoteをご参考下さい。

項目は
[名前]
[セクション]
[体温]
[備考]
としました。

そのカンパニーの事情に合わせて項目作成下さい。

画像1

出来たら、プレビュー画面からテスト送信し、スプレッドシートを作成して下さい。
スプレッドシートの詳しい作成方法はこちらのnoteをご参考下さい。

一覧表の作成

次に同じスプレッドシート内に新しいシート(シート1)を作成し、関係者一覧表を作ります。

画像2

1行目はあけて表を作ります。
A1には本日の日付が表示されるようにtoday関数を使用します。

=today()

赤い丸で囲ったセルに鈴木花子さんの3/24の体温が表示されるように設定していきます。

あいまい検索 -ワイルドカード-

画像3

フォームから送信された回答をまとめるシート【フォームの回答】をみてみます。
タイムスタンプは秒まで表示され、名前は姓と名の間にスペースが記載されています。このままだとスプレッドシートには 

2021/3/24 ≠ 2021/3/24 11:49:47
鈴木花子 ≠ 鈴木 花子 

と認識されてしまうので、ほしい値が関数で取り出せません。(セルに直接入力した 3/24 は、正確には2021/3/24 0:00:00 という値になっています。)
そんな時には、[~を含む]というあいまいな検索方法をさせるために[ワイルドカード](アスタリスク*)を使います。

文字列* ・・・ 文字列の後ろに他の文字がある値も含む
*文字列 ・・・ 文字列の前に他の文字がある値も含む
*文字列*・・・ 文字列の前後に他の文字がある値も含む

という意味になります。鈴木花子 を例にします。

鈴木* ・・・ 鈴木花子 / 鈴木 花子 / 鈴木はなこ / 鈴木
*鈴木 ・・・ 鈴木 / 演出部 鈴木
*鈴木*・・・ 鈴木/演出部 鈴木/鈴木花子/鈴木 花子/鈴木はなこ

 アスタリスクを文字列の前後につけるだけで、このように入力されている値が違っていても検索されるようになります。

日時も同じくあいまい検索が出来るようにします。
日付にはシリアル値という番号がふられています。(意味を詳しく知りたい方は別途調べて下さい)
[表示形式]→[数字]→[数値]で表示されます。
2021/3/24 は 44279 です。この数値には時間は含まれていないので、
44279* とする事で、3/24の0:00:00~23:59:59を検索する事が可能になります。

画像4

一覧表に列を足して、名字で検索する値を追加しました(セルB3)。
また、日付のシリアル値も追加(セルE1)。
=日付の入力されているセル&”*” で表示されます。
これで準備ができました。

INDEX&MATCH関数

=INDEX(範囲,行番号[,列番号])
index関数は範囲内の指定行、指定列にある値を取り出す事が出来ます。

画像6

=MATCH(検索値,範囲 [,照合の型])
match関数は検索値と同じ値が範囲内のどこにあるか(何行目、何列目)を取り出す事が出来ます。

画像7

照合の型は[完全に一致]した値だけ取り出すため[0]とします。

二つの関数を組み合わせて、欲しい値を表示させます。

画像7

シート[フォーム回答の1]↑ から
A列が【3/24】
かつ
B列が【鈴木を含む行】
のD列の値(体温)を取り出してみましょう。

画像9

=INDEX('フォームの回答 1'!$D:$D,MATCH($B3&E$1,'フォームの回答 1'!$B:$B&'フォームの回答 1'!$A:$A,0))

画像13

index関数の[行番号]にmatch関数を入れます。今回は列からは検索しないので[列番号]は省略します。
[行番号]の指定は二つ(日付と名前)あるので&で結びます。

表にコピペしていくので検索値は複合参照にして下さい。
式内の(絶対参照)が分らない方は、こちらのnoteの「参照元を固定する」をご参考下さい。

これでフォームで送られた体温が表示されました!

画像10

ただ、これだけだとフォーム入力していない人はエラーが表示されるので別の値(ここでは"未登録")を表示させるようにしてみます。

IFERROR関数

=IFERROR(値,エラーの場合の値)

値=上記index&match式=体温
エラーの場合の値="未登録"

文字列を表示させる場合はダブルクォーテーションで囲って下さい。
空白にしたい時は、"" これでOKです。

=iferror(INDEX('フォームの回答 1'!$D:$D,MATCH($B3&E$1,'フォームの回答 1'!$B:$B&'フォームの回答 1'!$A:$A,0)),"未登録")

画像11

これでフォームを送っていない方がすぐに分かるようになりました。

同じように、その日の備考欄だけを表に反映するように式を作ります。
今日の日付(A1)のシリアル値を検索値として使用します。

=iferror(INDEX('フォームの回答 1'!$E:$E,MATCH($B3&$B$1,'フォームの回答 1'!$B:$B&'フォームの回答 1'!$A:$A,0)),"")

記載がない場合は空欄にしたいので、[エラーの場合の値]は "" とします。

画像12

これで、備考欄の確認もこの表で出来るようになりました。

条件付き書式設定

最後に見やすいように表を整えます。今日の列がすぐわかるように色をつけます。

画像13

カスタム数式は =E$1=$B$1 です。

条件付き書式の方法はこちらのnoteをご覧下さい。エクセルの説明ですが大体同じです。

必要な日数分コピペして完成です!
参照元がずれていないか念のため確認して下さい。

画像14

表の体裁はご自身の好みで作成して下さいね。


この記事が気に入ったらサポートをしてみませんか?