こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

-広告-

解決済みの質問

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

こんばんは。

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

よろしくお願い致します。

投稿日時 - 2015-12-17 22:20:28

QNo.9097443

すぐに回答ほしいです

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

>本屋とかでExcelの本を読んだりしましたが、このような技術は本に書いてありません。
>どのようなところで調べたり学んだらこういう技術が得られるのでしょうか?

 私の場合は自己流ですので万人に対しても適した方法なのかは存じませんが、まず目的を果たすために必要となる機能を、各処理の要素ごとに分けた上で、その要素ごとに対して、Excelのヘルプで目的の処理を行う事が出来そうな機能が無いかどうかを探します。
 Excelのヘルプを開くと、「関数リファレンス」や「条件付き書式の設定」などといった項目が並んでいますので、例えば「こういった目的に使う事が"出来そうな"関数は無いか」という場合には、「関数リファレンス」を開き、並んでいる「検索/行列関数」、「日付と時刻の関数」、等々の項目の中から関連のありそうな項目を選んで開き、表示された関数とその機能の一覧を眺めて、目的としている処理を行う際に役立ちそうな関数のページを開いてその関数の機能を確認します。
 Excelのヘルプの内容で解らない事があったり、目的の機能が見つからなかったりした場合には、インターネットで検索して、個々の処理の要素ごとに目的を果たすために役立つ情報(機能に関する解説や、使用例などに関する情報)を探します。
 そうして集めた情報を組み合わせて一つに纏めた関数などを試しに作ってみて、想定通りの機能を果たす事が出来ているのかどうかを、「想定している全ての条件(例えばA1セルの値が10以上、20未満という条件であれば、その関数をB列の各行のセルに入力しておき、A列のセルに9、10、11、19、20、21を入力しておく)に対して確認を行う」という事を繰り返します。
 そうした事を繰り返して行きますと、目的を果たすためには役立たない機能に関する情報の中にも、「こんな事も出来るのか」と思える情報に触れる事も出来ますので、そういった情報も頭の隅に残る事になり、後に全く別の目的を果たす際に「確かこの場合に使う事が出来る『こんな機能』があった筈」という事を思い出し、調べ直す際に役立てる事が出来ます。
 そういった事を、様々な例題等で繰り返して行きますとその手の技術が自然と身に付く様になります。
 特に、この様なQ&Aサイトに投稿されて来るExcelに関する質問を例題として捉えて、回答を投稿するか否かは別として、解決方法を自分で考え出したり、他の回答者の回答内容を参照したりする事は、良い練習になりました。
 尤も、このサイトの場合、「教えてgoo」がパートナーサイトで無くなってからは、投稿数が極端に減った上に、関数に関する質問も少なくなりましたので、昔ほど良い例題にはならないかもしません。

 後、ネット上にはExcelに関して開設されているサイトも少なくありませんので、そういったサイトで目的を果たすために必要な機能を探すのも一つの手だと思います。
 下記はその一例ですが、下記のもの以外にも同様のサイトは多数あります。

【参考URL】
 よねさんのWordとExcelの小部屋
  http://www.eurus.dti.ne.jp/~yoneyama/

 エクセルの路地
  http://www.geocities.jp/oyakamassan_m/index.html

 Office TANAKA > 機能と数式
  http://officetanaka.net/excel/index.htm

 Excelでお仕事!
  http://www.asahi-net.or.jp/~ef2o-inue/top01.html

投稿日時 - 2015-12-20 13:13:00

お礼

アドバイスありがとうございます。
ただ、関数を丸暗記しようとしても、時間と労力を食うだけの状態です。
kagakusukiさんは、目的を持って、手段として関数を覚えているのですね。
ヘルプは見ていませんでした。今後見ます。
ご紹介いただいたサイトはオフィス田中以外はみたことがありませんでした。
A1:A33などは、A:Aなどと省略できるのですね。
テキスト関数も知りませんでした。
効率よくやれば、複数のネストも苦なくできるのでしょうね。
もっと発展して考えられるよに学びます。
ありがとうございます。
お世話になりました!
助かりました!!m(__)m

投稿日時 - 2015-12-31 18:52:29

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(3)

ANo.2

>データを各列にいれてみましたが、どうもうまく行きません・・・

 そうしますと、

>フリーソフトからエクセルに吐き出されたシート

に記載されている日付や時刻が日付データや時刻データーにはなっておらず、文字列データとなっている事が原因ではないかと思われます。
 解決方法の1つとしては、B列~E列をまとめて選択してから、Excelの置換機能を使って「日」を「日」に置換した後、「:」を「:」に置換する等という具合に、共通する文字を同じ文字に置換する事によって、文字列データを日付データや時刻データーに変換してしまうという方法があります。

 只、それでは手動操作を行う分だけ手間がかかる事になりますから、別の解決方法として、Sheet3のB列のセルに入力する関数を次のものと差し換えてみて下さい。

=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,"")))

投稿日時 - 2015-12-19 19:38:07

補足

kagakusukiさん
https://www.instagram.com/p/_fsRVLJWQt/?taken-by=okwebchie
できました!
置換でもできました。
差し替えた関数でもできました。
手動操作が必要になりますので、関数は大変助かります。
ありがとうございます。
今後、毎日活用させていただきます。
私には何年も前からこのようなものが必要だったのです。助かります。
しかし、本屋とかでExcelの本を読んだりしましたが、このような技術は本に書いてありません。
どのようなところで調べたり学んだらこういう技術が得られるのでしょうか?

投稿日時 - 2015-12-20 10:34:29

ANo.1

>時間が表示されない理由はどんなことが考えられますか?

 前回の御質問である質問No.9089695では、A列が「項目」欄、B列が「開始日」欄、C列が「開始時刻」欄、D列が「終了日」欄、E列が「終了時刻」欄となっていて、それぞれ値が入力されていました。
 それに対し今回の御質問の件のデータは、B列の「開始日」欄に年月日と時刻が一緒に入力されているだけで、C列の「開始時刻」欄やD列の「終了日」欄、それにE列の「終了時刻」欄には日時のデータが何も入力されていません。
 元データに「開始時刻」、「終了日」、「終了時刻」が入力されていないのですから、データ不足で計算が行われていないのです。
 ちゃんと「開始時刻」、「終了日」、「終了時刻」も入力する様にして下さい。
 後、「開始日」と「開始時刻」も一緒くたにはせず、分けて入力する様にして下さい。

投稿日時 - 2015-12-18 02:18:30

補足

https://www.instagram.com/p/_dfQAMJWYJ/?taken-by=okwebchie
再度、ありがとうございます。
データを各列にいれてみましたが、どうもうまく行きません・・・
どのような原因が考えられますか?
是非、毎日使用したいと考えているシートですので、よろしくお願い致します。

投稿日時 - 2015-12-19 13:58:58

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-