[[20161004134856]] 『日付ごとのグラフ作成について』(かりん58) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『日付ごとのグラフ作成について』(かりん58)

こんにちは。よろしくお願いします。

ExcelのシートのA列には月に実施する作業名が上から並んでいます。
その横C列には作業開始日、E列には作業終了予定日が入力されています。

作業は1日で終わるものもあれば、数日かかるものもあります。
これを日ごとのグラフで作業量を表したいです。

例)
作業名  開始  終了
作業A  10/1  10/1
作業B  10/1  10/3
作業C  10/2  10/5
作業D  10/3  10/3
作業E  10/5  10/5



グラフ(以下の数字を棒グラフか折れ線グラフで表示)
10/1  2
10/2  2
10/3  3
10/4  1
10/5  2



ようは月でいつが忙しいのかをグラフ化したいと考えてます。
よろしくお願いします。<(_ _)>

< 使用 Excel:Excel2013、使用 OS:Windows7 >


手打ちで十分と思いますが、以下のようにデータのレイアウトを変更できませんか?

	A	B	C	D	E	F	G
1		計	作業A	作業B	作業C	作業D	作業E
2	10/1	2	1	1			
3	10/2	2		1	1		
4	10/3	3		1	1	1	
5	10/4	1			1		
6	10/5	2			1		1

B列は、C〜G列のSumを計算する式にするだけ。

(???) 2016/10/04(火) 17:09


 一応今のレイアウトで。

 	A	B	C	D	E	F	G	H
 1	作業名	開始	終了	10/1	10/2	10/3	10/4	10/5
 2	作業A	10/1	10/1	1				
 3	作業B	10/1	10/3	1	1	1		
 4	作業C	10/2	10/5		1	1	1	1
 5	作業D	10/3	10/3			1		
 6	作業E	10/5	10/5					1
 7	 		合計	2	2	3	1	2

 D1からの日付は手入力。
 横の日付を入力し終わったら
 D2 =IF(AND($B2<=D$1,$C2>=D$1),1,"")
 横と下にフィルコピー。

 上記終了後に各日付の下でSUMで1を合計。
 1行目と合計行の必要範囲を選択して棒グラフ作成。
 上記例だとD1:H1とD7:H7

(1111) 2016/10/04(火) 17:32



Sub main() 'シート名=Sheet1
    Dim dic, c As Range, i As Long
    Set dic = CreateObject("Scripting.dictionary")
    For Each c In Sheets("Sheet1").UsedRange.Columns("C").Cells
        If IsDate(c.Value) Then
            For i = c.Value To c.Offset(, 2).Value
            dic(i) = dic(i) + 1
            Next i
        End If
    Next c
    Sheets.Add after:=Sheets("Sheet1")
    With ActiveSheet
        .Range("A1").Resize(dic.Count).Value = Application.WorksheetFunction.Transpose(dic.keys)
        .Columns("A:A").NumberFormatLocal = "m""月""d""日"";@"
        For Each c In .Range("A1").CurrentRegion
        c.Offset(, 1).Value = dic(c.Value)
        Next c
        .Shapes.AddChart.Select
        ActiveChart.SetSourceData Source:=.UsedRange
        ActiveChart.ChartType = xlLine
    End With
End Sub
(mm) 2016/10/04(火) 17:42

ども^^
ご所望とはちょっと違うかもですが、
こういう表にして、

         [A]    [B]   [C]   [D]   [E]   [F]   [G]   [H]   [I]   [J]   
      ┌───┬──┬──┬──┬──┬──┬──┬──┬──┬──┐
   [1]│作業名│開始│終了│9/30│10/1│10/2│10/3│10/4│10/5│10/6│
      ├───┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
   [2]│作業A │10/1│10/1│    │ 1  │    │    │    │    │    │
      ├───┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
   [3]│作業B │10/1│10/3│    │ 1  │ 1  │ 1  │    │    │    │
      ├───┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
   [4]│作業C │10/2│10/5│    │    │ 1  │ 1  │ 1  │ 1  │    │
      ├───┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
   [5]│作業D │10/3│10/3│    │    │    │ 1  │    │    │    │
      ├───┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
   [6]│作業E │10/5│10/5│    │    │    │    │    │ 1  │    │
      └───┴──┴──┴──┴──┴──┴──┴──┴──┴──┘

D2セルに、
条件付き書式設定→新しいルール→数式を使用して、書式設定するセルを決定

次の数式を満たす場合に値を書式設定に以下の数式を入れて、
=AND($B2<=D$1,$C2>=D$1)

書式→塗りつぶし で、例えば黒を選んで「OK」

書式ルールの編集のボックスも「OK」

条件付き書式ルールの管理のボックスも「OK」

上記表の1の部分のセルが塗潰せるので、バーチャートとして使用できます。
横棒に隙間があった方が良ければ行を挿入して調整してください。^^

積み上げの棒グラフの方が良いなら、
上記の説明を参考にしてセルに1を表示するようにして、
カウント関数で数えて同じように塗潰して棒グラフを作ってもいいかなと思います。

(まっつわん) 2016/10/04(火) 17:43


 グラフ用の表を別に作ってもいいのなら

	A	B	C	D	E	F
1	作業名	開始	終了			
2	作業A	10/1	10/1		10/1	2
3	作業B	10/1	10/3		10/2	2
4	作業C	10/2	10/5		10/3	3
5	作業D	10/3	10/3		10/4	1
6	作業E	10/5	10/5		10/5	2
7	・	・	・		10/6	・
8	・	・	・		10/7	・
 
 
 E列にオートフィルで1か月分の日付を入れておく(式でもできるけど)

 F2 =SUMPRODUCT(($B$2:$B$50<=E2)*($C$2:$C$50>=E2))

 下コピー

 E列・F列の表でグラフ作成。

 ところで
[[20160608143721]]『5営業日前までの数をカウントする式』
 ↑ まだ解決してないんですかね?
(笑) 2016/10/04(火) 18:03

 COUNTIFS でよかった。

 F2 =IF(E2="","",COUNTIFS($B$2:$B$50,"<="&E2,$C$2:$C$50,">="&E2))

 ついでに SUMPRODUCT の方も

 F2 =IF(E2="","",SUMPRODUCT(($B$2:$B$50<=E2)*($C$2:$C$50>=E2)))

 参考まで。
(笑) 2016/10/04(火) 18:29

皆様、色々手順ありがとうございます。
時間かかりましたが、1111さんの手順でなんとかできました!!
ありがとうございます<(_ _)>


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.