• ベストアンサー

エクセル カウントの仕方について

エクセル初心者です。 出勤時間と退勤時間のみの情報で時間帯別の出勤人数を カウントしたいと考えてます。     8/15     8/16    8/17     開始 終了 開始 終了  開始 終了 1さん10:30 16:30    11:30 17:00 2さん16:30 23:30 16:30 23:30 17:00 22:30 3さん 10:30 16:30 11:30 17:00 4さん10:30 22:30 16:30 22:30 17:00 22:30 5さん10:30 16:30 10:30 16:30 6さん10:30 23:30 16:30 23:30 17:00 22:30 7さん16:30 23:30    17:00 22:30                 8/15      8/16     8/17        時間帯人数   時間帯人数   時間帯人数 10:30-15:00 15:00-17:00 17:00-18:00 18:00-20:00 20:00-22:30 20:00-23:30 可能でしょうか? 質問情報として少なければ、追加致します。 よろしくおねがい致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

シート1にデータがあり、B1-C1セルに8/15、D1-E1セルに8/16・・・のように1行目に日付が、2行目には日付に対応して、開始の列と終了の列があるとします。 A3セルから下方には氏名があり、それぞれの列には開始や終了の時刻が入力されているとします。 シート2にはお求めの表を作るとしてA3セルには10:30,B3セルには15:00 のように時間帯を2つの列の下方に入力します。 最終のA8セルには22:30、B8セルには23:30が入力されているとします。 C1セルには日付の8/15、D1セルには8/16、E1セルには8/17・・・・のように横に日付が入力されているとします。 2行目でC2セルには時間帯人数、と入力して右横にオートフィルドラッグします。 C3セルには次の式を入力して横方向にオートフィルドラッグしたのちに8行目まで下方にもオートフィルドラッグします。 =SUMPRODUCT((INDEX(Sheet1!$A$1:$X$10,ROW($A$3),MATCH(C$1,Sheet1!$1:$1,0)):INDEX(Sheet1!$A$1:$X$10,ROW($A$10),MATCH(C$1,Sheet1!$1:$1,0))<=$A3)*(INDEX(Sheet1!$A$1:$X$10,ROW($A$3),MATCH(C$1,Sheet1!$1:$1,0)):INDEX(Sheet1!$A$1:$X$10,ROW($A$10),MATCH(C$1,Sheet1!$1:$1,0)+1)>=$B3)) なお、式ではエラー処理をしていません。Sheet1では10行目まで、X列までのデータが対象になっています。適宜範囲を広げるなど実情に合わせて式を変更してください。

その他の回答 (1)

回答No.1

最初の表のシートをSheet1、8/15の開始列と終了列をそれぞれB列、C列とし、データは3行目から入力されているとします。 集計表は、A列に時間、B列が8/15、3行目から集計結果を表示するとします。 ●Excel2007なら =COUNTIFS("Sheet1!B$3:B$9",">=" & TIMEVALUE(Left($A3,4)),"Sheet1!C$3:C$9","<=" & TIMEVALUE(Right($A3,4)) ) ●Excel2003なら =SUMPRODUCT((Sheet1!B$3:B$9>=TIMEVALUE(Left($A3,4)))*(Sheet1!C$3:C$9<=TIMEVALUE(Right($A3,4)))) をB3に入力して、集計範囲にコピペします。

hk0129
質問者

お礼

助かりました。有難うございました。 さすがです!!