【スプレッドシート】=NOW()と条件付き書式で時刻表を作る
趣味でタイムテーブルを管理したい事案が発生したので、
それについての作業メモになります。
完成図
以下が完成図です。
機能としては「今の時刻の行をハイライトする」といった感じのシンプルなものです。
編集手順
・B列に日時を指定し、表示形式を変更
・=NOW()関数で現在時刻を取得・編集する
・NOW関数の自動更新を設定する
・条件書式を設定する
B列に日時を指定し、表示形式を変更
まずはB1に日時のデータを入力します。
あとはセルの右下を選択し、B列末端までドラッグで下ろします。
こんな感じ。
このままだと見た目がお些末なので表示を変更します。
上部メニューの「表示形式>数字>表示形式の詳細設定>その他の日付や時刻の形式」
へと進みます。
表示形式が設定できるので、状況に合わせてカスタマイズを行います。
今回の場合だと「時」だけ表示されればよいので、
他の情報を削除して適用しましょう。
=NOW()関数で現在時刻を取得・編集する
NOW関数を用いると、ページの表示・更新時の日時が表示されます。
次に、NOW関数で表示した日時を、B列と一致する様に加工します。
以下が各データの抽出と、合体後の数値となります。
各セルの関数は以下の通りです。
年:=YEAR()関数
月:=MONTH()関数※
日:=DAY()関数※
時:=HOUR()関数
分と秒は00で設定するので関数を使用せず、「'00」と入力して用意します。
(00だけでは数値として認識され、0に変換されてしまう為)
※月日が1桁の場合、関数で数値を取得すると10の位の0が消失する
(07月の場合、7になってしまう)ので、IFで条件分岐を設定して
0を付与しています。
抽出したデータを結合する際にはJOIN関数を用いて、年月には「/」
時刻には「:」をデータ間に付与してあげます。
日時の間には半角スペースが含まれていますので、「&" "」を
挟んで挿入しています。
NOW関数の自動更新を設定する
現状だと「NOW関数が自動で更新されない」問題があるため、
シートの設定を変更します。
まず、上部メニューの「ファイル>Googleスプレッドシートの設定」を選択します。
「計算」タブを選択し、再計算欄を「変更時」から「変更時と毎時(or毎分)」
に変更して、設定と保存を押します。
上記の変更で、NOW関数が毎時or毎分自動更新されるようになります。
※PC上のブラウザでは自動更新されますが、スマートフォン用アプリ
「スプレッドシート」では設定が適用されず、自動更新されない可能性があります。
(2021年7月現在)
条件書式を設定する
「ドラッグで範囲選択→右クリックで条件付き書式を選択」または
上部メニューから「表示形式>条件付き書式」を選択します。
あとはB列の一致するセルに適用されるように、カスタム数式と書式を設定します。
無事に適用されました、やったね。
雑感
実際のところはこんなスマートな運びではなく、
「NOWじゃ一致しないやん!ばらしてくっつけてみよう」
「MONTHとDAYの0消えてるやん!0&付与で大丈夫かな?」
等の試行錯誤はありました。
ただ、上手くいく・いかないに関わらずあれこれ考えながら
形にしていくのは楽しいなーと改めて実感できたので、
とても有意義でした。
追記
今回のシートはしばらく使うつもりで弄ってましたが、やんごとなき事情により
1週間で役目を終えることになりました。
ズコーッ