別シートに勉強時間の集計結果が表示されない
こんばんは。
http://okwave.jp/qa/q9089695.html
質問No.9089695
上記前回質問でお世話になりました。
勉強時間を集計したSheet1には
Sheet1にA列:科目 B列:開始日 C列:開始時刻 D列:終了日 E列:終了時刻
の記載があります。
終了時刻から開始時刻を差し引いた作業時間を表示する列がありません。
頂いたアドバイスとして、
***********************************************************************************************************
Sheet3のA列とB列を作業列として使用して、Sheet2に科目ごとの勉強時間の合計を集計するものとします。
Sheet3のA2セルに次の関数を入力して下さい。
=IF(INDEX(Sheet1!$A:$A,ROW())="","",IF(COUNTIF(Sheet1!$A$1:INDEX(Sheet1!$A:$A,ROW()),INDEX(Sheet1!$A:$A,ROW()))=1,ROW(),""))
Sheet3のB2セルに次の関数を入力して下さい。
=IF(COUNT(INDEX(Sheet1!$B:$E,ROW(),))=4,IF(ISERROR(1/(INDEX(Sheet1!$B:$B,ROW())=TEXT(INDEX(Sheet1!$B:$B,ROW()),"yyyy/m/d")/(INDEX(Sheet1!$B:$B,ROW())>=1))/(INDEX(Sheet1!$C:$C,ROW())=TEXT(INDEX(Sheet1!$C:$C,ROW()),"h:m:s")+0)/(INDEX(Sheet1!$D:$D,ROW())=TEXT(INDEX(Sheet1!$D:$D,ROW()),"yyyy/m/d")/(INDEX(Sheet1!$D:$D,ROW())>=1))/(INDEX(Sheet1!$E:$E,ROW())=TEXT(INDEX(Sheet1!$E:$E,ROW()),"h:m:s")+0)),"",IFERROR(TEXT(SUM(INDEX(Sheet1!$D:$E,ROW(),))-SUM(INDEX(Sheet1!$B:$C,ROW(),)),"[h]:m:s")+0,"")),"")
Sheet3のA2~B2セルをコピーして、Sheet3のA列~B列の3行目以下に貼り付けて下さい。
Sheet2のA2セルに次の関数を入力して下さい。
=IF(ROWS(A$1:A2)>COUNT(Sheet3!$A:$A),"",INDEX(Sheet1!$A:$A,SMALL(Sheet3!$A:$A,ROWS(A$1:A2))))。
Sheet2のB2セルに次の関数を入力して下さい。
=IF($A2="","",TEXT(SUMIF(Sheet1!$A:$A,$A2,Sheet3!$B:$B),"[h]:m:s")+0)
***********************************************************************************************************
上記のアドバイスを実行しましたが、項目は表示されましたが、時間が表示されません。
時間が表示されない理由はどんなことが考えられますか?
よろしくお願い致します。
お礼
つたない質問で申し訳ありませんでした。 質問内容的には謎も少し残りますが、勉強にもなりました。 ありがとうございました。
補足
ご回答いただき、ありがとうございます。 皆さんに、分かりやすく説明をというつもりで、自分なりに簡略化してご質問したのですが、 混乱を招く質問の仕方のようで失礼しました。 教えていただいた内容で質問の対応については理解致しました。 が、今回は合計(SUM)での関数だったので、(1)、(2)の方法はできたのですが、、、 下記の場合ではどのようになりますか? (1) Sheet1で (各セルに対して、右のような数値が入っています) A B C D 1 -180 -90 0.1111 -2.6 2 -90 -25.8 0.1963 5.064 3 -25.8 25.8 0 0 4 25.8 90 -0.1963 5.064 5 90 180 -0.1111 -2.6 10 30 そして、 A15セルにて =IF(($A$10>=$A1)*AND($A$10<$B1),$C1*$A$10+$D1,0) A15をドラッグして、下記のようにしたいのですが、 B15 =IF(($A$10>=$A2)*AND($A$10<$B2),$C2*$A$10+$D2,0) C15 =IF(($A$10>=$A3)*AND($A$10<$B3),$C3*$A$10+$D3,0) D15 =IF(($A$10>=$A4)*AND($A$10<$B4),$C4*$A$10+$D4,0) 普通にドラッグすると、うまく反映できません。 $A$10については「絶対参照」指定しているので特に問題ないのですが、 $A2や$B2・・・などが予定外の値になってしまいます。 それを回避すべく、A15、B15、C15を地道に入力してからD15にドラッグすると、 D15 =IF(($A$10>=$A1)*AND($A$10<$B1),$C1*$A$10+$D1,0) とこれまたA15と同じ関数になってしまいます。 最低限のセル入力だけでE15まで入力する方法を教えてください。(実際にはM15まであります) (2)次に・・・ (1)の設定が無事にできたとして、(下記関数が希望) A15にて =IF(($A$10>=$A1)*AND($A$10<$B1),$C1*$A$10+$D1,0) B15にて =IF(($A$10>=$A2)*AND($A$10<$B2),$C2*$A$10+$D2,0) C15にて =IF(($A$10>=$A3)*AND($A$10<$B3),$C3*$A$10+$D3,0) D15にて =IF(($A$10>=$A4)*AND($A$10<$B4),$C4*$A$10+$D4,0) これを利用してSheet2でも $A$10の部分だけSheet2の$G$40に変換したいです。(他はSheet1を読みにいきたい) 恐らく下記の関数でもよいとは思うのですが、 A15にて =IF(($G$1>=Sheet1!A1)*AND(Sheet2!$G$1<Sheet1!B1),Sheet1!C1*Sheet2!G1+Sheet1!D1,0) A16にて =IF(($G$1>=Sheet1!A2)*AND(Sheet2!$G$1<Sheet1!B2),Sheet1!C2*Sheet2!G1+Sheet1!D2,0) A17にて =IF(($G$1>=Sheet1!A3)*AND(Sheet2!$G$1<Sheet1!B3),Sheet1!C3*Sheet2!G1+Sheet1!D3,0) A18にて =IF(($G$1>=Sheet1!A4)*AND(Sheet2!$G$1<Sheet1!B4),Sheet1!C4*Sheet2!G1+Sheet1!D4,0) 絶対参照やドラッグなどをもっとうまく活用したいのですが、どういった方法がありますか? 今は各セル毎に、Sheet1と2を行ったり来たりしながら全て入力しています。 上手な説明ができずに申し訳ありませんが、どうぞお力を下さい。 よろしくお願いします。