- ベストアンサー
エクセルで睡眠時間の表を作りたいのですが…
家族の介護をしています。 エクセル2000で睡眠時間の表を作りたいのですがどんな風に入力すればいいですか? 最終的に横線の棒グラフみたいにしたいのですが。 眠る時間が1日の中でバラバラあります。 02:30 05:30 08:00 11:00 15:00 17:00 21:00 23:00 こんな感じです。 これを入力し最終的にグラフで表示したいのですがどんなふうにすればいいでしょうか? 今は24時間の表をつくり、眠る時間をマーキングしているんですけどエクセルで上手に作れませんか? お願いします<(_ _)>
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
ご要望のExcel資料がボタンクリックのみで簡単に作成できるよう、「計時記録とデータ編集機能のついたストップウォッチ」的な物を考えました。 物と言っても実体はプログラム(末尾に記載)であって、これを描画で作成したボタンに関連づけるだけで環境が整います。 あとはストップウォッチ感覚でExcelファイルのシート上に描画して配置されたボタンのクリックにより実現します。奇数回目のクリックは睡眠開始のサイン、偶数回目のクリックは、お目覚めのサインを示し。偶数回目のクリックを行うと瞬時にお望みの資料が自動作成/更新できます。 それには次のように三段階の準備作業があります。多少手数がかかりますが一度だけの作業です。 (1) 末尾のプログラムをコピーし、Excelの「Module1」という場所に貼り付ける。 AltキーとF11キーを同時に押し挿入(I)標準モジュールを選択することでModule1が用意されます。ここに貼り付けをします。 (2) ExcelのSheet1上のF1セル付近にボタンを描画する。 (3) 前項で描画したボタンにプログラムを登録する。登録マクロ名は「test」を選択します。 (2)と(3)の具体的方法は、文字数の都合で割愛します。http://personal.okwave.jp/kotaeru.php3?q=2160990のANo.2を参考に!!((2)の作業はツール(I)を右クリック、フォームを選択でもできます。) 説明が足りない点については、ご指示いただければ別途回答で・・・。 Sub test() Sheets("Sheet2").Select Cells(1, 1).Value = "月日" Cells(1, 2).Value = "睡眠時間" For ji = 0 To 23 Sheets("Sheet2").Cells(1, ji + 3).Value = ji & "時" Next ji Sheets("Sheet2").Select Columns("A:B").Select Selection.ColumnWidth = 10 Columns("C:Z").Select Selection.ColumnWidth = 4 Sheets("Sheet1").Select Cells(1, 1).Value = "月日" Cells(1, 2).Value = "睡眠開始時刻" Cells(1, 3).Value = "お目覚め時刻": Cells(1, 4).Value = "睡眠時間" rw = Range("A35565").End(xlUp).Row If Cells(rw, 1) <> "" And Cells(rw, 2) <> "" And Cells(rw, 3) = "" Then mezame Else _ If Cells(rw + 1, 1) = "" And Cells(rw + 1, 2) = "" And Cells(rw + 1, 3) = "" Then hajime Else Exit Sub End Sub Sub hajime() Sheets("Sheet1").Select rw = Range("A35565").End(xlUp).Row + 1 Cells(rw, 1).Value = Date: Cells(rw, 1).NumberFormatLocal = "m""月""d""日"";@" Cells(rw, 2).Value = Time: Cells(rw, 2).NumberFormatLocal = "h:mm;@" End Sub Sub mezame() Sheets("Sheet1").Select rw = Range("A35565").End(xlUp).Row If Cells(rw, 1) <> Date Then Cells(rw, 3).Value = "24:00:00": _ Cells(rw, 3).NumberFormatLocal = "h: mm;@": _ Cells(rw, 4).FormulaR1C1 = "=(RC[-1]-RC[-2])*24": goukei: _ Cells(rw + 1, 1).Value = Date: Cells(rw + 1, 1).NumberFormatLocal = "m""月""d""日"";@": _ Cells(rw + 1, 2).Value = "00:00:00": _ Cells(rw + 1, 2).NumberFormatLocal = "h: mm;@": _ Cells(rw + 1, 3).Value = Time: Cells(rw, 3).NumberFormatLocal = "h:mm;@": _ Cells(rw + 1, 4).FormulaR1C1 = "=(RC[-1]-RC[-2])*24": goukei Else _ Cells(rw, 3).Value = Time: Cells(rw, 3).NumberFormatLocal = "h:mm;@": _ Cells(rw, 4).FormulaR1C1 = "=(RC[-1]-RC[-2])*24": goukei End Sub Sub goukei() rw = Sheets("Sheet1").Range("c35565").End(xlUp).Row tsukihi = Sheets("Sheet1").Cells(rw, 1): sjikan = Sheets("Sheet1").Cells(rw, 4) slptime = Round(Sheets("Sheet1").Cells(rw, 2) * 24) '睡眠開始時刻 mzmtime = Round(Sheets("Sheet1").Cells(rw, 3) * 24) - 1 '目覚め時刻 For r = 2 To Sheets("Sheet2").Range("a35565").End(xlUp).Row If Sheets("Sheet2").Cells(r, 1) = tsukihi Then Exit For Next r Sheets("Sheet2").Cells(r, 1).Value = tsukihi Sheets("Sheet2").Cells(r, 2).Value = Sheets("Sheet2").Cells(r, 2) + sjikan For x = 3 To 26 If slptimex <= mzmtime And x >= slptime + 3 And x <= mzmtime + 3 Then Sheets("Sheet2").Cells(r, x).Interior.ColorIndex = 50 Next x End Sub
その他の回答 (5)
- silverbear
- ベストアンサー率25% (163/639)
No2です。グラフに限らなくて良いのであれば「書式→条件付書式」を使えばいけると思います。 まず、1時間置きか30分置きに時間を書きます。・・・(1) 0:00 1:00 2:00・・・・ のように。 次に、どこかに 2:30 5:30 8:00 11:00 15:00 17:00 21:00 23:00 のデータを書きます。仮にA2~B5に書いたとします。・・・(2) (1)で書いたセルを全て選択し、「書式→条件付書式」を選択します。 条件1の設定内容 セルの値が:次の値の間:=$A$2:=$B$2 条件が真の時に・・・プレビュー は赤とか黄色とか、好きな色を選択してください。 追加ボタンを押し、条件2を出します。設定内容は セルの値が:次の値の間:=$A$3:=$B$3 条件が真の時に・・・プレビュー は赤とか黄色とか、好きな色を選択してください。 これで条件に合う時間のセルに色が付きます。 この方法で3つまでは登録できますので、午前と午後で二つに分けると6個まで登録できます。
お礼
ありがとうございます。 これも会社のパソコンでやってみました。 カラフルで見やすいものができました。 ありがとうございました<(_ _)>
- zap35
- ベストアンサー率44% (1383/3079)
#03です。#01さんへの補足を見ました。質問は >24時間の表をつくり、眠る時間をマーキングしているんですけどエクセルで上手に作れませんか? ではなくて、「日々の睡眠時間の合計を横棒グラフにしたい」だけなのですね。それならグラフで可能です。(マーキングの自動化と勘違いしました) A列 B列 C列 D列 7/1 02:30 05:30 =C1 - B1 7/1 08:00 11:00 7/1 15:00 17:00 7/1 21:00 23:00 7/2 03:00 04:00 … 以下続く というデータがあるとして、D列には式を入れて個々の睡眠時間を計算します。1行目なら =C1-B1 になります。D2以下はD1をコピーします。書式は時刻にしてください。 次に任意の列に(ここではE列とします)にその月の日付を縦に入力します。F列は関数で日々の睡眠時間合計を求めます。 E列 F列 1行目 7/1 2行目 7/2 3行目 7/3 F2の式は =SUMIF(A:A,E2,D:D) です。書式を時刻にしてください。 これを日付毎の横棒グラフにするならグラフウィザードで「横棒グラフ」→データ範囲タブ データ範囲E1:F31。系列は「列」。 系列タブで「系列1は削除」して「項目軸ラベルとして使用」に「E:E」と入力してください。 時刻の場合メモリ刻みは1時間に合わせるのは、ちょっと難しいのでデータラベルで横棒にデータを一緒に表示するのがいいでしょう
お礼
お陰様でパソコンを買いました。 ビスタになってからなのでお礼が遅くなりすみません。 こちらはグラフウィザードでやってみたのですがイマイチ希望通りになりません。でもとてもとても参考になりました、 ありがとうございました。
- zap35
- ベストアンサー率44% (1383/3079)
まずお望みのことはグラフで実現するのはあまり現実的な方法ではないと思います。 マクロを使用して 7/1 02:30 05:30 7/1 08:00 11:00 のようなデータを縦方向が日付、横方向は30分毎の時間枠に展開して、該当する時間枠の色を塗りつぶすようなことは可能です。 でもmiki0427さんがどのようなデータを入力して、どのようにMAP展開しようなど構想を固めていない状態では具体的なマクロは組めません。 また作ってさし上げたにしても、それに手を加えようと思ったらVBAの知識は必要です。具体的に決まったら補足していただくか、再度質問されてはいかがでしょうか。
お礼
お陰様でパソコンを買いました。 ビスタになってからなのでお礼が遅くなりすみません。 マクロですか、私にできるでしょうか、不安です。 本でもかって読んでから実際にやってみたいと思います。 どうもありがとうございました。
- silverbear
- ベストアンサー率25% (163/639)
________________________________________________________________|_|______|__D1__|__D2__|__D3__|・・・ 0:00|2:30|5:30|8:00|11:00|15:00|17:00|21:00|23:00|24:00|_|1月1日|=B2-A2|=C2-B2|=D2-C2|・・・ って感じでデータを入力して、後半の部分(|_|以降の部分)を選択し、「積み上げ横棒」のグラフで系列を列にチェックすればどうでしょう?
お礼
お陰様でパソコンを買いました。 ビスタになってからなのでお礼が遅くなりすみません。 これからアドバイスどおり、オフィスをいれて実際にやってみたいと思います。どうもありがとうございました。m(_ _)m
- imachan_net
- ベストアンサー率25% (99/386)
いつもお世話になっています。 少し自分なりに考えましたが、 何をしたいのか、不明なので、わかりません。 例えば、1日に複数回寝たりすることもあるかも知れません。 グラフで何を見たいのですか?? 同じ時間帯に寝てることを確認したいのか? 長い睡眠が出来ていることを確認したいのですか? 合計睡眠時間を確認したいのですか? 介護大変ですね・・・ その中で、睡眠時間まで見たりしたら、 余計疲れちゃうんではないですか? そんなこと(グラフ付け・・・)しないで、 ゆっくり休んでいたらどうですか?? 単純にはEXCELでは無理なような・・・
お礼
この度はどうもありがとうございました<(_ _)> 本当にお世話になりました。
補足
こちらこそお世話になります。 私は家族の介護をしておりますが、家族は長く寝ることができません。 いうなれば朝起きて夜寝るような普通の生活ができないようなのです。 お医者様から毎日寝た時間をマーキングしてくれと言われています。 これが昨夜の全部の睡眠時間です。 1.02:30 05:30 2.08:00 11:00 3.15:00 17:00 4.21:00 23:00 とこのように一日のなかで複数ある睡眠中を記載しています。 今はエクセルで時間を入力。 寝た時間、 起きた時間を記録。 別のシートに 0時~23時を1セルに割り当てて寝た時間に色をつけてます。 0時 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 寝ている時間をこの下のセルに色をつけています。 入力した睡眠時間をグラフに変換できたらなと思っただけなのですがそんなに難しいのでしょうか?
お礼
お陰様でパソコンを買いました。 ビスタになってからなのでお礼が遅くなりすみません。 とても参考になりました、これからオフィスをいれて実際にやってみたいと思います。 どうもありがとうございました。
補足
皆様、ご回答を頂きましてありがとうございます。 パソコンが壊れてしまい(店の話ですと熱がどうのこうので暑さ負け?のようです。) ただ今、実家のPCを借りて書いております。 必ず締め切りますしお礼も致しますが今しばらくお時間をいただければ幸いです。 ありがとうございました。