或いは、別シートにデータを日付順に並べ直した上で、別シートのE列に総作業時間を表示するという方法は如何でしょうか。
【方法その1】作業列と関数を使用する方法
今仮に、Sheet1の
A3セルに 作業No.
B3セルに 作業項目
C3セルに 作業時間
D3セルに 作業日
と入力されていて、
Sheet1のA列~D列の4行目以下に各データが入力されていて、
Sheet1のD1セルに指定の日付を入力すると、その日付がSheet2のA1セルにも表示されると共に、
Sheet1のC1セルとSheet2のC1セルに指定した日の総作業時間が表示され、
Sheet2のA2以下に指定した日の作業No.、
Sheet2のB2以下に指定した日の作業項目、
Sheet2のC2以下に指定した日の作業時間
の一覧が表示されるものとします。
まず、Sheet1のB1セルに次の数式を入力して下さい。(※Sheet1に関しては、ANo.4と同じです)
=IF(ISNUMBER(1/DAY($D$1)/($D$1<>"")),"総作業時間","")
次に、Sheet1のC1セルに次の数式を入力して下さい。
=IF(ISNUMBER(1/DAY($D$1)/($D$1<>"")),SUMIF($D$3:INDEX($D:$D,MATCH(9^9,$D:$D)),$D$1,$C$3:INDEX($C:$C,MATCH(9^9,$D:$D))),"日付入力→")
次に、適当な使用していないシート(ここでは仮にSheet3とします)のA4セルに次の数式を入力して下さい。
=IF(AND(ISNUMBER(DAY(INDEX(Sheet1!$D:$D,ROW()))),INDEX(Sheet1!$D:$D,ROW())<>""),INDEX(Sheet1!$D:$D,ROW())+COUNTIF(Sheet1!$D$3:INDEX(Sheet1!$D:$D,ROW()),"="&INDEX(Sheet1!$D:$D,ROW()))/COUNTIF(Sheet1!$D$3:INDEX(Sheet1!$D:$D,MATCH(9^9,Sheet1!$D:$D)),"="&INDEX(Sheet1!$D:$D,ROW())),"")
次に、Sheet3のA4セルをコピーして、Sheet3のA5以下に貼り付けて下さい。
次に、Sheet2のA2セルに次の数式を入力して下さい。
=IF(ROWS($2:2)>COUNT(Sheet3!$A:$A),"",INDEX(Sheet1!A:A,MATCH(SMALL(Sheet3!$A:$A,ROWS($2:2)),Sheet3!$A:$A,0)))
次に、Sheet2のA2セルをコピーして、Sheet2のB2~D2の範囲に貼り付けて下さい。
次に、Sheet2のE2セルに次の数式を入力して下さい。
=IF(AND($D2<>"",COUNTIF($D$1:$D2,$D2)=1),SUMIF($D:$D,$D2,$C:$C),"")
次に、Sheet2のA2~E2の範囲をコピーして、同じ列の3行目以下に貼り付けて下さい。
【方法その2】作業列は使用せず、関数のみで処理する方法(但し、処理に要する負荷は大)
今仮に、Sheet1の
A3セルに 作業No.
B3セルに 作業項目
C3セルに 作業時間
D3セルに 作業日
と入力されていて、
Sheet1のA列~D列の4行目以下に各データが入力されていて、
Sheet1のD1セルに指定の日付を入力すると、その日付がSheet2のA1セルにも表示されると共に、
Sheet1のC1セルとSheet2のC1セルに指定した日の総作業時間が表示され、
Sheet2のA2以下に指定した日の作業No.、
Sheet2のB2以下に指定した日の作業項目、
Sheet2のC2以下に指定した日の作業時間
の一覧が表示されるものとします。
まず、Sheet1のB1セルに次の数式を入力して下さい。(※Sheet1に関しては、ANo.4や【方法その1】と同じです)
=IF(ISNUMBER(1/DAY($D$1)/($D$1<>"")),"総作業時間","")
次に、Sheet1のC1セルに次の数式を入力して下さい。
=IF(ISNUMBER(1/DAY($D$1)/($D$1<>"")),SUMIF($D$3:INDEX($D:$D,MATCH(9^9,$D:$D)),$D$1,$C$3:INDEX($C:$C,MATCH(9^9,$D:$D))),"日付入力→")
次に、Sheet2のD2セルに次の数式を入力して下さい。
=IF(ROWS($2:2)>COUNT(Sheet1!$D$3:INDEX(Sheet1!$D:$D,MATCH(9^9,Sheet1!$D:$D))),"",SMALL(Sheet1!$D$3:INDEX(Sheet1!$D:$D,MATCH(9^9,Sheet1!$D:$D)),ROWS($2:2)))
次に、Sheet2のA2セルに次の数式を入力して下さい。
=IF($D2="","",INDEX(Sheet1!A:A,SUMPRODUCT(ROW(Sheet1!$D$3:INDEX(Sheet1!$D:$D,MATCH(9^9,Sheet1!$D:$D)))*(Sheet1!$D$3:INDEX(Sheet1!$D:$D,MATCH(9^9,Sheet1!$D:$D))=$D2)*(COUNTIF(OFFSET(Sheet1!$D$3,,,ROW(Sheet1!$D$3:INDEX(Sheet1!$D:$D,MATCH(9^9,Sheet1!$D:$D)))-ROW(Sheet1!$D$3)+1),$D2)=COUNTIF($D$1:$D2,$D2)))))
次に、Sheet2のA2セルをコピーして、Sheet2のB2~C2の範囲に貼り付けて下さい。
次に、Sheet2のE2セルに次の数式を入力して下さい。(※Sheet2のE2セルに関しては、【方法その1】と同じ数式です)
=IF(AND($D2<>"",COUNTIF($D$1:$D2,$D2)=1),SUMIF($D:$D,$D2,$C:$C),"")
次に、Sheet2のA2~E2の範囲をコピーして、同じ列の3行目以下に貼り付けて下さい。
お礼
使い勝手のいいシートにして頂き感謝するかぎりです。 今後は自分で考え作れるようにしたいですね、ありがとうございました。