ダウンロード

勤務予定表

開始と終了時刻を入力すると、「勤務予定人数表」に時間帯別勤務人数が集計されるようにします。



問題
完成例
解答例
  配列数式を使用した方法
  COUNTIFSを使用した方法
サンプルファイルのダウンロード
関連
リンクリスト
解答を 全て展開 折り畳む

問題

予定入力表

開始と終了時刻を0〜23の整数として入力可能とします。
・0〜23 の数値のみ入力可
 不正入力時
 

・自動的に英数モードする

 

時間帯別の勤務予定人数表

・それぞれの時間帯毎(「開始」時刻以上 「終了」時刻未満)の合計人数を表示
営業時間外(営業時刻より前)はセルの色を灰色
・必要最少人数未満は文字色を



回答入力用シート


完成例



予定入力表


時間帯別の勤務予定人数表


解答例

配列数式を使用した方法

ここでは、COUNTIF関数を配列数式として作成。


O5に設定した数式

{=SUM((OFFSET(予定表,,2*($B5-1),,1)<>"")*(OFFSET(予定表,,2*($B5-1),,1)<=O$4)*(OFFSET(予定表,,2*($B5-1)+1,,1)>O$4))}

式の説明


B: OFFSET(予定表,,2*($B5-1),,1)
"予定表"という名前(「予定入力表」シートの黄色枠内「C8:P17」)範囲を、列方向に 2*($B5-1) シフト、 列数を「」とする範囲に定義し直す。
下図セル「O5」の数式の場合、2*($B5-1)=2*(1-1)=0 となるので、



B式の範囲は、列方向の移動無し、列数「1」となり、下図の赤枠のように定義し直される。





Aの数式を分解してそれぞれ計算してみると下記が得られる
ここで、O$4 の値は「10」

C:(OFFSET(予定表,,2*($B5-1),,1)<>"")
  入力セルが空白かを判定。空白であればFALSE(=0)となり、式 A の値は常に「0」になる。

(OFFSET(予定表,,2*($B5-1),,1)<=O$4)
  入力時刻が開始時刻以前かを判定

E:(OFFSET(予定表,,2*($B5-1)+1,,1)>O$4)
  入力時刻が終了時刻より後かを判定

F:{=SUM((OFFSET(予定表,,2*($B5-1),,1)&lt;&gt;&quot;&quot;)*(OFFSET(予定表,,2*($B5-1),,1)&lt;=O$4)*(OFFSET(予定表,,2*($B5-1)+1,,1)&gt;O$4))}
  C,D,E全てを満たすセルの個数(人数)をカウント

16(火)、10時のセルO5について計算してみると、それぞれ下記のようになる。

よって、個数(人数)として「」が求められる

COUNTIFSを使用した方法



COUNTIFSは、複数の範囲のセルに条件を適用して、全ての条件が満たされた回数をカウントする関数で、
Excel2007以降のバージョンで使用可。



O5に設定した数式は下記
=COUNTIFS(OFFSET(予定表,,2*($B5-1),,1),"<="&O$4,OFFSET(予定表,,2*($B5-1)+1,,1),">"&O$4)

式の説明


Y: OFFSET(予定表,,2*($B5-1),,1)
  配列数式の場合と同一

Z:OFFSET(予定表,,2*($B5-1),,1),"<="&O$4
  入力した開始時刻が、配置表の時刻以前(以下)かを比較

W:OFFSET(予定表,,2*($B5-1)+1,,1),">"&O$4
  入力した終了時刻が、配置表の時刻より後(大きい)かを比較

COUNTIFSの入力ダイアログボックス



>> トップページ へ    >> エクセル無料教材 へ


関連

OFFSET関数の仕様と使い方

COUNTIFS関数の仕様と使い方




×
PageTop