[EXCEL] 15分刻みのガントチャート 別案 ~シフト作成チャレンジ② はみ出し&乗っかり記事編~
こんな記事を見かけました。
エクセルで15分刻みのガントチャートを作る、というものです。
私は先日の記事 「[EXCEL] エクセルでシフト表を作成してみたい① ~はじまり編~」で30分刻みのシフト表(もどき)を作りました。
また以前は、「[EXCEL] 条件付き書式レッスン⑩ ガントチャート」あるいは「[EXCEL]業務改善は実態把握から ~何に何分費やしているかをサクッと記録する~」という記事も書いています。
これらの記事で示している方法を使えば、15分単位のガントチャートは作れるのではないかな、と思いました。
勿論、上の記事とは違うアプローチになりますが、どっちがいい、どっちが正解、という話ではありません。
なので「別解」はなく、単なる「別案」です。
エクセルは、同じ結果を示すために、取り得る方法がいくつもあります。
今回のものも、こんな方法もある、ということでお受け止めください。
1 枠づくり + 開始と終了時間から所要時間を出す
これはサクッと。

前提として、前の作業の終了と次の作業の開始が同じ、としています。
ただし、これは入力を楽にするためのもの。次の作業の開始は、上書きも可能です。
2 時刻軸を作る
上の表の右に「時刻」の軸を作ります。
今回は、とりあえず、9:00スタート。
そこから15分刻みの「時刻」を自動で作るために、計算式を入れます。

隣の列以降は自動で時刻が入るようにします。

「9:30」のセル右下に「+」が出たら、右にドラッグ。
これで、「時刻」軸ができます。

ちなみに、この部分は最終的には表示しません。
3 「時」と「分」欄を作る
時刻軸の下に「時」と「分」を表示します。
こちらが実際の表示用です。
「時」は、上の時刻セルを引っ張ってきて、「セルの書式設定」(Ctrl+1)を単純に「h」にするだけ。(常に2桁表示 例:08 とするなら hh とする)


「分」も同じように「mm」でいいかな、と思ったのですが、ダメでした。
なので 分を取り出す MINUTE関数を使います(「セルの書式設定」は「##」)。
*「mm」だと「00」「15」「30」「45」の全てが「01」になってしまいます。

4 「時」「分」欄を横に伸ばす
とりあえず、9時台の部分だけコピーしたら・・・
15,30.45 の上の「9」は消します(見栄えの問題)。

その上で、9時台の部分を範囲指定して、外枠だけ付けます(Alt ⇒ B ⇒ S)。
その後、右下に「+」が出たら、右にドラッグすると・・・

下のように、時刻が出ます。

これで、表頭となる「時」と「分」が出来ました。
各列の幅が広すぎますが、これは後で調整します。
5 条件付き書式の設定
ここから「条件付き書式」を設定していきます。
いきなり「新しい書式ルール」欄に入れるとわかりづらいので、まずはセルに入れてみます。
まずは、
最初のセル =AND(G1>=C7,G3<=D7)
上にある該当時刻G1が、作業開始のC7以上(以降)で、かつ、作業終了時刻G3がD7以下(以前)であれば、TURE になります。
下の表は、開始が9:00、終了が9:30なので、9:00台(~9:15)の部分は「TURE」になります。

6 数式を「条件付き書式」に設定する
上の式を「新しい書式ルール」に入れます。
① 他のセルにコピーするために、あらかじめ、「絶対参照」を設定しておきます。具体的には、
=AND(G1>=C7,G3<=D7) を以下にします。
=AND(G$1>=$C7,G$3<=$D7)
G1とG3は、行は固定なので、行番号(数字)に$を付けます。
C7とD7は、列は固定なので、列番号(英字)に$を付けます。
「$」は、セル番号の部分をクリックして、F4を押します。
押す度に「$」の付き方が変わります。
②この数式をコピーします(数式バーで数式を範囲指定 ⇒ Ctrl+C)
③ Alt ⇒ H ⇒ L ⇒ N で、「新しい書式ルール」を開いて
「数式を使用して、数式設定するセルを決定」を選び、下の欄に数式を貼り付けます。

書式は。紺の塗りつぶしにします(単に私の好み)。
なお、15分毎の区切りを「見える化」したいので、白い罫線を引くようにしておきます(外枠⇒罫線の色で白を選択)。
うまくできなかったら、Ctrl+Z で取り消して直します。
8 他のセルにコピー
後はほかのセルにコピーしていきます。
①9:00のセルを選択 ⇒ 右下にカーソルを合わせて「+」が出たら右にドラッグ(9:45のセルまで)
*9時台を選択 ⇒ Ctrl+R でも同じ
*9:00のセルを選択 ⇒ Ctrl+C ⇒ 9時台を選択 ⇒ Ctrl+Vでも同じ

FALSEの文字が出ても問題なし(それが正解)
②9時台全体に外罫線を引く(Alt ⇒ H ⇒ B ⇒ S)

③ そのまま Ctrl+C ⇒ 11:45台まで選択 ⇒ Ctrl+V

「FALSE」と出るが、気にしない(④で消す)。
④ DELでセル内の計算式を消す。

⑤下にコピー
Shift+↓でコピーしたい範囲(下図では2行)を選択 ⇒ Ctrl+D

左の作業開始・終了時間に即して塗りつぶしがなされていればOK。
おかしければやり直し。
9 列幅を調整する。
「時」と「分」を範囲選択してから アホイ(Alt ⇒ H ⇒ O ⇒ I )で列幅が短くなります。

1~2行目は、セル幅が狭くなったため「#」となっていますが、そのままにしておきます。

セル幅をもっと狭くしたければ「分」の文字サイズを小さくして、列幅を狭めます(ここは手動。範囲指定⇒列番号で調整)
*あまり狭くすると2桁の「時」が「#」になってしまう。
それを避けるには、隣のセルと結合する方法もある。
10 時間を「0:00」からにしたい場合
1行目の左端の時間を変えると、他の時間も変わる。

以上で終了です。
作業数が多ければ、行を下にコピーしていきます(テーブル化はしてない)。
時間が長ければ、左にコピーしていきます。
おまけ:作業開始/終了を簡単に入力する
作業の開始と開始の時刻は手入力です。
*作業開始が前の作業の終了と同時刻なら自動で入るようにしてある。
作業開始は、前の作業の終了〇分後(例1分後)、とすることも可能。
でも、時刻の手入力って面倒です。
なので、リストから選べるようにしてみます。
①最初の作業開始時間のセルを選択
②Alt ⇒ A ⇒ V ⇒ V で「データの入力規則」が開く
③「入力値の種類」で「リスト」を選ぶ

④「元の値」欄をクリックし、1行目の時刻を選択(「#」になっているところ)
*リストは、横並びでも構わない(意外と知られていない?)

⑤これで、「作業開始」セルをクリックすると時間リストが出る。

⑥リストにない時間(例 10:39)を入れる可能性があるならば、「エラーメッセージ」の「無効なデータが入力さえたらエラーメッセージを表示する」の☑を外しておく。

⑦設定したセルをコピーしたら、時間を入力するセルを範囲選択して、Alt ⇒ E ⇒ S ⇒ N(入力規則)を押す。

これで、他の時間セルもリストから選べる。

なお、15分区切りでない時刻を入れた場合、その枠は塗りつぶしされない。
例:下図「う」は作業終了が「10:39」となっているが、10:30~10:45の欄は塗りつぶされない。

15分未満のものは、塗りつぶしの表示上は「切り捨て」されるということです。
これに対処する方法もあると思いますが、とりあえず今回は触れません。
仕上げ:1~3行目を消す
1~3行目の部分は「#」となっているので、隠します。
「セルの非表示」だと、隠したことに気付かない恐れがあるので、グループ化して隠します。
①1~3行目を範囲選択
②Alt+Shift+→の同時押し
③行番号の左に「+」が出るので、クリックで1~3行が隠れる。
(「ー」で表示される)
1~3行を隠したところ

以上です。
冒頭紹介記事とは、やり方が異なります。
冒頭で「アプローチが異なる」と書きましたが、作業時刻が該当の枠内に当てはまるか否か、という考え方は同じだと思います。
「枠内の時刻に合致するか」をどう判断するか?が、ちょっと異なっている、と言う感じでしょうか。
冒頭記事の数式はかなり複雑で、解きほぐしていかないと私にはちょっと難しい。
私の場合は、過去記事の通り、時刻の欄を別に作り、そこと比較していく方法を取っています。
既述のとおり、どっちがいい、というものではありませんが、こうやって、自分なりの方法を考えるのも、いい勉強です。
アイシーティーリンク株式会社 公式ブログさん、いい機会を提供していただき、ありがとうございました。
*土曜日に冒頭記事を拝見して、「自分なら・・・」という方法は思いつき、夕食後にサクッと記事化しようと思ったのですが、週末は飲んじゃうのでダメダメ・・・。日曜の午後に再度パソコンに向かったのですが、アマゾンプライムで9回裏から中継を見てしまい、ずるずる・・・。野球なんて滅多に見ないんですが・・・。
