プログラマーの尾関です。
今回はExcelで日報ツールを作る方法について紹介します。
Excelで日報ツールを作るメリットについて
Excelで日報ツールを作るメリットとしては、以下のように開発メンバーの作業内容を「一覧」で見ることができるからです。
このExcelを SharePoint により共有することで、メンバー同士の情報共有や、管理者が進捗を確認するために使えて便利です。
日報Excelの作成方法
すべての機能は紹介できませんが、重要な部分をかいつまんで説明したいと思います。
条件付き書式の作成方法
まずは「土・日・祝日」でセルの色を変える「条件付き書式」の設定方法について解説します。
メニューから「条件付き書式 > 新しいルール」を選びます。
条件付き書式の設定項目が表示されるので、「範囲に適用」に適用する範囲を指定し、「規則の種類」を “数式” にします。
後は色を変える条件を “次の数式を満たす場合にすべて値を書式設定” に設定し、適用される書式を設定します。
そして完了ボタンを押すと条件付き書式が適用されます。
土日のセルの色を変える
WEEKDAY関数
WEEKDAY([日付], 1) を使うと、戻り値が「1」であれば「日曜日」、「7」であれば「土曜日」になるので、これで判定できます。
結合セルの問題
Excelの仕様上、結合セルは左上の値以外は「空文字」となります。
それにより条件付き書式で色を変える場合に “=WEEKDAY($A2)=1” (日曜日の色を変える) といった記述をすると、以下のように2~3行目の色が適用されない問題があります。
これを回避するには、ADDRESS() 関数で直接現在の行を指定して、MOD() で剰余のぶんを差し引くと正しい色に変えられます。
1 |
=WEEKDAY(INDIRECT(ADDRESS(ROW()-MOD((ROW()+1),3), 1)))=1 |
- 説明
- ADDRESS()の引数には “行” と “列” を指定します
- 行の値はMOD() で剰余を求めて剰余を差し引くことで空の行へのアクセスを回避します
- ADDRESS() で計算したセルの位置は INDIRECT() で反映させます
- ADDRESS()の引数には “行” と “列” を指定します
WEEKDAY関数に不正な日付を渡した場合
WEEKDAY関数は参照するセルが「不正な日付」だと “土曜日” を返します。それにより土曜日のときに条件付き書式で色を付けようとすると、結合セルの影響で不正な日付を参照すると、それらすべての行にも色がついてしまいます。
これも結合セルの問題で書いた方法(剰余を求めて差し引く)で回避します。
1 |
=WEEKDAY(INDIRECT(ADDRESS(ROW()-MOD((ROW()+1),3), 1)))=7 |
今日の日付の色を変える
TODAY() 関数で今日の日付が入るので、数式の比較にそれを使うことで判定できます。
1 |
=A2=TODAY() |
祝日の色を変える
祝日シートを作成する
祝日を自動判定する方法はないので、「祝日」シートを作って祝日となる日付のリストを作成します。
祝日の名前の定義
A列セルに祝日を入力した場合は、A列を全選択してその範囲に「祝日」という名前を定義します。
これで “祝日” という名前が定義できたので、COUNTIF() で “祝日” と日付が一致するかどうかで判定ができます。
1 |
=COUNTIF(祝日, INDIRECT(ADDRESS(ROW()-MOD((ROW()+1),3), 1)))=1 |
定義名の確認方法
定義した名前や範囲を変更したい場合は「数式 > 名前の管理」を選びます。
- 注意:「名前の管理」はデスクトップ版のみ使用可能です
空欄のセルを暗転する
ISBLANK関数で空欄かどうかを判定できます。
ただ他の書式を上書きしてしまうので条件付き書式に優先順位を付ける必要があります。
条件付き書式の優先順位をつける
条件付き書式のリストの上位にあるほど優先されて処理されます。そのため暗転は一番下に移動させることで、優先順位が最も低くなります。
おしまい
ゲーム開発での作業内容や進捗管理は結構難しいですが、こういったツールを作って情報共有できれば円滑に開発を進められると思っています。
以上、Excelで日報ツールを作る方法でした。この情報がゲーム開発に役立てれば幸いです。