[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『横軸が1時間刻みのグラフを作りたい』(tkn)
x軸が作業時間、横軸が1時間刻みの時間となっている縦棒グラフを作りたいです。
データテーブルに持っている情報は開始時間・終了時間・作業時間の三つで、「何時から何時まで何分働いたか」ということは分かります。(この行が複数あって、24時間中の作業時間の偏りを見たい感じです)
これを1時間刻みのグラフで表したいのですが、どのように手を入れればいいか分からず躓いています...。
10-12時で120分というデータがあるならばグラフには10時と11時にそれぞれ60を充てたいのです。
さらに実際には10:30-11:30などのデータもあり、その場合には10時に30、11時に30を値として加えたいです。
いまいち実装のための方法が分からず、どなたか上記のものを作る方法について知恵をお貸しいただけませんでしょうか。
宜しくお願い致します。
< 使用 Excel:unknown、使用 OS:Windows10 >
> x軸が作業時間、横軸が1時間刻みの時間 グラフのレイアウトがよく判りません。 x軸も横軸も、同じですよね?
それと、元データがシート上にどう並んでいるか、具体的に説明できますか? 日毎とか、人毎とかのデータが表になっているかと思いますが。
(???) 2020/03/19(木) 11:41
日付、担当者名、作業開始時間、作業終了時間、実作業時間の列が並んだ行が大量にある状況です。
(tkn) 2020/03/19(木) 13:04
よーわからんけど。コレ?
[[20200305132628]] 『時間のグラフ』(ゆう)
(GobGob) 2020/03/19(木) 14:19
・日付、担当者名、作業開始時間、作業終了時間、実作業時間の列が【A:E】の範囲で
タイトルが1行目、データが2行目からの場合
1.【F1:AC1】の範囲に「0:00〜23:00」までの行を作成
2.【F2】に=IF(FLOOR($C2,"1:00"*1)=F$1,60-MINUTE($C2),IF(FLOOR($D2,"1:00"*1)=F$1,MINUTE($D2),IF(AND(HOUR($C2)<HOUR(F$1),HOUR(F$1)<HOUR($D2)),60,"")))
3.【F2】に入れた条件式をドラッグで適用範囲に適用する
注意:作業開始・終了時間が0:00(24:00)を跨いだ場合は適用されない式です
(その) 2020/03/20(金) 08:45
以下のマクロを実行すると、集計結果がグラフに反映されます。
Sub test() Dim v Dim j As Long, k As Long Dim 開始 As Long, 終了 As Long Dim a(0 To 23) As Double Dim cht As Chart
v = Cells(1).CurrentRegion.Columns("c:d").Value
For j = 2 To UBound(v) 開始 = Hour(v(j, 1)) 終了 = Hour(v(j, 2))
For k = 0 To UBound(a)
If k = 開始 Then a(k) = a(k) + WorksheetFunction.Min(TimeSerial(k + 1, 0, 0), v(j, 2)) - v(j, 1) End If
If k > 開始 Then If k < 終了 Then a(k) = a(k) + TimeSerial(1, 0, 0) End If End If
If 終了 > 開始 Then If k = 終了 Then a(k) = a(k) + v(j, 2) - TimeSerial(k, 0, 0) End If End If Next Next
On Error Resume Next Set cht = ActiveSheet.ChartObjects(1).Chart On Error GoTo 0
If Not cht Is Nothing Then cht.SeriesCollection(1).Values = a End If
End Sub
(マナ) 2020/03/20(金) 15:04
>For k = 0 To UBound(a) ↓ For k = 開始 To 終了
(マナ) 2020/03/20(金) 15:34
その さん
ご回答いただきありがとうございます。
早速導入させていただきました。
2.【F2】に=IF(FLOOR($C2,"1:00"*1)=F$1,60-MINUTE($C2),IF(FLOOR($D2,"1:00"*1)=F$1,MINUTE($D2),IF(AND(HOUR($C2)<HOUR(F$1),HOUR(F$1)<HOUR($D2)),60,"")))
こちらですと例えば12:30-17:30の作業に対して13時や14時の列には60が入るべきところ、必ず30が入ってしまいます。
同様に開始が12:45などの場合は60-45の15が12時以外の列にも入力されてしまいます。
こちらをなんとか解消したいのですが良い方法はありませんでしょうか。
(tkn) 2020/03/24(火) 11:58
上記条件で、1〜3の手順を行った場合に発生しましたか?
当方環境では、12:30-17:30の作業時間も12:45開始も問題なく表示されました。
データの情報や条件など不足していた中、載せた条件式です。
条件や手順が異なる場合は、そこに原因があるかもしれません。
(その) 2020/03/24(火) 17:00
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.