• ベストアンサー

別シートの合計時間の列が無い表から集計可能ですか?

お世話になっています。 勉強時間をフリーソフトで記録しています。 フリーソフトからエクセルに吐き出されたシートには、開始時刻と終了時刻が記載されているだけで、終了時刻から開始時刻を差し引いた作業時間を表示する列がありません。 このシートを参照して、別の自分で作るシートに科目ごとの勉強時間の合計を集計したいのですが、いかんせん、作業時間を表示する列がないので、どのような関数をつかえばいいか思いつきません。 sumifとかで集計できないでしょうか? やはり、参照元に作業時間列がないと無理でしょうか? 宜しくお願い致します。

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

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.3

 今仮に、 >フリーソフトからエクセルに吐き出されたシート とはSheet1であるものとし、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)  次に、Sheet2のA2~B2セルをコピーして、Sheet2のA列~B列の3行目以下に貼り付けて下さい。

crossinlove
質問者

お礼

高度な技術をレクチャーしていただいてありがとうございます。 教えてもらったことを再現したかったのですが、できませんでした。 また、仕組みも理解しておりません。 時間が立ってしまいましたので、一旦締め切らせていただきたいと思います。 せっかく高度な技術を教えてもらっていますので、再度質問しなおしますので、宜しければまた教えてもらえると嬉しいです。 ありがとうございます!

crossinlove
質問者

補足

高度な技術をレクチャー頂いて、ありがとうございます。 恐縮です。 現在検証しております。 仕組みを理解できておらず、せっかく教えてもらっている技術です。 週末までに理解して、お礼させていただきたく思います。 返事が遅れて申し訳ありません。

その他の回答 (3)

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.4

シート2のA列に科目一覧を並べます ごくシンプルに B2: =SUMIF(Sheet1!A:A,A2,Sheet1!D:D)+SUMIF(Sheet1!A:A,A2,Sheet1!E:E)-SUMIF(Sheet1!A:A,A2,Sheet1!B:B)-SUMIF(Sheet1!A:A,A2,Sheet1!C:C) 時刻の書式、若しくは [h]:mm の設定を付けておく 以下コピー でいいです。

crossinlove
質問者

お礼

私の理解が乏しく、再現できませんでした。 再現してお礼をするのが筋ですが、時間が立ってしまいましたので、先に締め切らせていただきます。 ありがとうございます!

crossinlove
質問者

補足

ご指導いただきまして、ありがとうございます。 現在、再現できておりません。 週末までに、再現してお礼させていただきたく思います。 ありがとうございます。

  • msMike
  • ベストアンサー率20% (363/1775)
回答No.2

「エクセルに吐き出されたシート」に「作業時間を表示する列がありません」と仰るのが全く理解できません。 シート上にそのための列を挿入するなり、空き列を使うなりして「作業時間を表示」するための式を入力すれば好いだけのことでしょう?それが出来ない事情でもあるのですか? 「参照元に作業時間列がないと無理」なんてことはアリエナ~イ。

crossinlove
質問者

お礼

失礼しました。 エクスポートしたシートを参照元とし、反映先シートに関数を設定しておけば、一回一回、作業時間を表示するための式を入力する手間を省くため の質問でした。 言葉足らずで申し訳ありません。

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.1

>やはり、参照元に作業時間列がないと無理でしょうか? フリーソフトから吐き出されたファイルはCSV形式でしょうか? 時間の計算は終了日時から開始日時を差し引けば求められますので元データのシートで予め計算されると良いでしょう。 F2=(D2+E2)-(B2+C2) >sumifとかで集計できないでしょうか? SUMIF関数を使えば予め計算された時間から目的の集計ができます。 SUMIF関数の数式は貼付画像が判読できないので具体的に提示できません。

crossinlove
質問者

お礼

画像が見える状態になっていませんでした。 申し訳ありません。 エクスポートしたシートで計算する場合は、ご助言の数式を応用することになりますね。 ありがとうございます。

関連するQ&A

  • 別シートに勉強時間の集計 これに集計期間を指定

    お世話になっています 質問No.9097443 質問No.9089695  質問No.9104294でご指導いただきました。 ◎希望条件 勉強時間を集計したシートA列:科目 B列:開始日 C列:開始時刻 D列:終了日 E列:終了時刻 の記載があるsheet1には終了時刻から開始時刻を差し引いた作業時間を表示する列がない。 sheet1に差引の作業時間列を追加することなく、別のシートで各科目の勉強時間を集計する方法を教えてもらいました。 ************************************************************************************* ◎レクチャー頂いた内容は 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(OR(INDEX(Sheet1!$B:$B,ROW())="",INDEX(Sheet1!$C:$C,ROW())="",INDEX(Sheet1!$D:$D,ROW())="",INDEX(Sheet1!$E:$E,ROW())=""),"",IF(ISERROR(1/(YEAR(INDEX(Sheet1!$B:$B,ROW()))>1904)/(INDEX(Sheet1!$C:$C,ROW())+0>=0)/(INDEX(Sheet1!$C:$C,ROW())+0<1)/(YEAR(INDEX(Sheet1!$D:$D,ROW()))>1904)/(INDEX(Sheet1!$E:$E,ROW())+0>=0)/(INDEX(Sheet1!$E:$E,ROW())+0<1)),"",IFERROR(TEXT(INDEX(Sheet1!$D:$D,ROW())+INDEX(Sheet1!$E:$E,ROW())-INDEX(Sheet1!$B:$B,ROW())-INDEX(Sheet1!$C:$C,ROW()),"[h]:m:s")+0,""))) 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) ************************************************************************************* ◎☆今回は、このシートに集計期間を設定したいのですが、 可能でしょうか。  上記のやり方だと、Sheet1の全ての日付の項目を集計してしまいます。  そこで、  D3に集計指定期間開始日  E3に集計指定期間終了日 を設定するなどしてできないでしょうか。  sheet!1に指定期間日を設定しないやり方でしたら、Sheet2でもSheet3にでもどちらでもいいのですが。  よろしくお願いします。

  •  勉強時間の指定期間内の集計をしたいです。

     勉強時間を集計しています。  A列科目、B列開始日、C列開始時刻、D列終了日、E列終了時刻、F列合計のシートです。  集計開始日と集計開始終了日の間の期間だけをJ列の科目ごとにK列に集計したいのです。  日付データで、どのようなネストを組んだらよいかわかりません。  AVERAGEIFSとDATE関数だとは思うのですが。  よろしくお願いします。

  • 別シートに勉強時間の集計結果が表示されない

    こんばんは。 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) *********************************************************************************************************** 上記のアドバイスを実行しましたが、項目は表示されましたが、時間が表示されません。 時間が表示されない理由はどんなことが考えられますか? よろしくお願い致します。

  • 別シートに勉強時間の集計結果を表示 仕組みが・・・

    お世話になっています 質問No.9097443 及び 質問No.9089695 でご指導いただきました。 勉強時間を集計したシートA列:科目 B列:開始日 C列:開始時刻 D列:終了日 E列:終了時刻 の記載があるsheet1には終了時刻から開始時刻を差し引いた作業時間を表示する列がない。 sheet1に差引の作業時間列を追加することなく、別のシートで各科目の勉強時間を集計する方法を教えてもらいました。 レクチャー頂いた内容は ************************************************************************************* 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(OR(INDEX(Sheet1!$B:$B,ROW())="",INDEX(Sheet1!$C:$C,ROW())="",INDEX(Sheet1!$D:$D,ROW())="",INDEX(Sheet1!$E:$E,ROW())=""),"",IF(ISERROR(1/(YEAR(INDEX(Sheet1!$B:$B,ROW()))>1904)/(INDEX(Sheet1!$C:$C,ROW())+0>=0)/(INDEX(Sheet1!$C:$C,ROW())+0<1)/(YEAR(INDEX(Sheet1!$D:$D,ROW()))>1904)/(INDEX(Sheet1!$E:$E,ROW())+0>=0)/(INDEX(Sheet1!$E:$E,ROW())+0<1)),"",IFERROR(TEXT(INDEX(Sheet1!$D:$D,ROW())+INDEX(Sheet1!$E:$E,ROW())-INDEX(Sheet1!$B:$B,ROW())-INDEX(Sheet1!$C:$C,ROW()),"[h]:m:s")+0,""))) 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) ************************************************************************************* 実践できたものの、仕組みが複雑でわかりません。 Sheet3のA2では、IF関数の中で、COUNTIF関数が使われていますが、なんのためなのかわかりません。 Sheet3のB2セルには関数の中に">1904"と数値の1904より大きい値を指定する関数が組み込まれたいますが、なんのためか理解できていません。 Sheet2のA2では、「Sheet2のA1:A2がSheet3のA列より大きい」という条件に適合しなかった場合、最小値を求める計算をしていますが、何のために行っているのかわかりません。 Sheet2のB2では、A2に適合しなかった場合、Sheet1のA列から何かを何かの条件に一致したものを合計して時間表示していますが、よくわかりません。 簡単でいいので、解説をお願いできませんでしょうか? すみません、理解力が乏しいもので申し訳ありませんが、よろしくお願い致します。

  • エクセル上での時間集計

    エクセルを使用して作業日報を作成していますが、時間集計の方法と、集計時間に定数をかけて算出する方法を教えて下さい。日々の入力は、開始時刻9:00、終了時刻18:00、休憩1:00にて作業時間8:00(A)。これを1カ月繰り返して、作業時間を集計する(B)。このBに6000を掛けて¥000,000.-みたいな表示をしたいのです。宜しくお願いします。

  • 別々のシートの表を集計したい

    別々のシートにある表を集計したいのですが、簡単に初心者でもできるやり方はないでしょうか? 商品ごとの週間発注数量を、画像のように一日ごとに集計したいのです。 新規シートにコピー・ペーストを繰り返せばできないこともないのですが、行や列を間違える可能性がありそうで・・・ 使用ソフトはエクセル2003、2007でアクセスは入っていません。 ちなみに作業する人がパソコンが苦手な人たちばかりでエクセルもまともに使える人がいません。 マクロか何かでボタンひとつでできるとか夢のようなことは言いませんが、テンプレートを作ってそこに流し込むだけでできるようにでもなれば理想なのですが、なかなか思うようにいきません。 販売大臣が入っているパソコンがあるので、そちらで入力し、日計集計しようとも思ったのですが、データ量が多くなり入力に時間かかってしまうのがネックで悩んでいます。 何かいい案がないでしょうか? お知恵を拝借できれば非常にありがたいです。よろしくお願いいたします。

  • Excelでの別シート集計について

    Excelで月別、項目別で時間を集計するシートを作成しようとしています。 シート2ではシート1 F列コード別に集計してD列の時間データを月別に合計 シート3ではシート1 F列コードとG列コード別(Fが1001でGが1001、、、)に集計してD列時間データを合計、という表データにして抽出したいと考えています。 シート1には K欄に年月を表示  =IF(OR(A7="",B7="",C7=""),DATE(2100,12,31),DATE(A7+2000,B7,C7)) L列にF列コード+年月  =F7&(2000+A7)&B7 M列にG列コード+年月  =G7&(2000+A7)&B7 というところまでは設定したのですが、出力先となるシート2、シート3にはどのような設定をすればよいのか行き詰っています。 なにとぞ易しい回答をよろしくお願い申し上げます。

  • EXCELで複数シートの各A列を集計シートに横並びに表示したい。

    EXCELの複数シートのA列を集計シートに並べて表示したいのですが簡単に設定できる方法はありますか? 例) 集計シートのA列にシート1のA列 集計シートのB列にシート2のA列 集計シートのC列にシート3のA列... といった感じです。 集計シートに設定する式もしくは何か機能があれば教えてください。

  • エクセル 複数シートの同一セルを別シートへ集計

    エクセルで複数sheetの同一セルを集計sheetへコピーしてきて一覧にし、集計するという作業を行なっています。 1~20のsheet(sheet数sheet名は変動します)を作り、一番右側に集計sheetがあります。 集計sheetのA5へsheet1のF10、A6へsheet2のF10・・・(内容は文字列) 集計sheetのB5へsheet1のG10、B6へsheet2のG10・・・(内容は数値) とコピーしていき、B30にはB5~B29の合計がSUM関数で入っています。 VBAで、集計sheetから左側のsheetの指定セルを一気に集計sheetへコピーしてくる方法はないでしょうか。 ただし集計sheetから左側のsheet21とsheet22は集計に入れたくないという式も教えて頂きたいです。 お時間のある方、ご教授下さい。 または別の質問で参考になるようなものがあればアドレスを教えて下さい。 説明が下手で申し訳ないですが、どうぞよろしくお願いします。

  • 表からの合計

    お世話になります、集計についてお教えください。 上段のような表があります。そしてこれを下段のような数字を合計した表に組み替えたいと思います。 この下段の表の黄色い部分に入れる数式を考えています。 上段の表に合計を示す行と列を挿入すればsumifを活用することで出来るかと思うのですが、できれば上段の表は生データとして触らないようにしたいのです。 また、実際のデータはかなりの行と列の数となっており、構成要素も多岐にわたるので手作業を加える相対参照などは避けたいと思っています。 加えて、今後の活用の点からもピボットなどの機能ではなく、関数を組み合わせた数式で処理したいと思っています。 どのようにすればよいかお教えくだされば幸いです。 A A B B あ 1 2 3 4 あ 5 6 7 8 い 9 10 11 12 い 13 14 15 16 い 17 18 19 20 A B あ い

専門家に質問してみよう