0

I am having some difficulty in populating a data into a composite line chart

I have the following data weekday(sunday,monday,tuesday...saturday)*hours(0,1,2,3...23)*minutes(0/30)

day hour    minutes unique_counts
sunday      0   0   922
sunday      0   30  1011
sunday      1   0   1239
...
sunday      23  0   737
sunday      23  30  985
monday      0   0   1406
...
monday      23  0   545
monday      23  30  666
...
tuesday     0   0   829
...
tuesday     14  0   3059
...
tuesday     23  30  834
...
wednesday   23  30  874
...
thursday    23  30  839
...
friday      23  30  637
...
saturday    23  30  683

Is it possible to populate this structure to a chart ? As I am doing a lotta manual process such as rearranging the individual weekdays and its respective values into separate columns to create a chart. I have 10 similar sheets to repeat the process. Is there any way to automate the sheets or any generic procedure for this data to generate graph plot ?

X-Axis - hour&minutes (00:00, 00:30, 01:00,...23:00, 23:30)

Y-Axis - unique_counts (x,y,z ....)

individual data line for sunday/monday/tuesday/wednesday/thursday/friday/saturday

P.S: if it is a easy process, please excuse me. I am not much proficient in excel. I spoke with a person who knows more excel than me and his suggestion was to record macro when re-arranging the data into individual columns and apply it for several sheets. As, I need more suggestions I am posting this question here.

Thanks!

Edit[13/08/2014]: I just got a chance to look into pivot table. Created a new time column concatenating the hour/minute fields. But still, have to do some manual process for each sheets to generate the pivot data and chart.

enter image description here enter image description here

Community
  • 1
  • 1
Logan
  • 1,331
  • 3
  • 18
  • 41

1 Answers1

0

I have changed ...
Adding a column D with the formula:

D2 -> =B2+C2/60

to have the time value. Use the macro:

Dim Sr, e, i As Integer

e = 2
Sr = 1
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlXYScatterLinesNoMarkers
For i = 2 To 9999
    If (Cells(i, 1).Value = "") And (e + 1 = i) Then Exit For
    If Cells(i, 1).Value <> Cells(e, 1).Value Then
        ActiveChart.SeriesCollection.NewSeries
        ActiveChart.SeriesCollection(Sr).XValues = Range("D" & e & ":D" & i - 1)
        ActiveChart.SeriesCollection(Sr).Values = Range("E" & e & ":E" & i - 1)
        ActiveChart.SeriesCollection(Sr).Name = Cells(e, 1).Value
        e = i
        Sr = Sr + 1
    End If
Next

The code generate a multiline chart.
Without adding column:

Dim Sr, e, i, k As Integer
Dim Stri As String

e = 2
Sr = 1
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlXYScatterLinesNoMarkers
For i = 2 To 9999
    If (Cells(i, 1).Value = "") And (e + 1 = i) Then Exit For
    If Cells(i, 1).Value <> Cells(e, 1).Value Then
        Stri = "{"
        For k = e To i - 1
            Stri = Stri & (Cells(k, 2).Value + Cells(k, 3).Value / 60) & ";"
        Next
        Stri = Mid(Stri, 1, Len(Stri) - 1) & "}"
        Stri = Replace(Stri, ",", ".")
        Stri = Replace(Stri, ";", ",")
        ActiveChart.SeriesCollection.NewSeries
        ActiveChart.SeriesCollection(Sr).Formula = "=SERIES(""" & Cells(e, 1).Value & """," & Stri & "," & ActiveSheet.Name & "!" & Range("D" & e & ":D" & i - 1).Address & "," & Sr & ")"
        e = i
        Sr = Sr + 1
    End If
Next

The new code rebuilt the formula for the chart...
Carefully with the second code, because the number are displayer like "," but inserted like ".".
That the reason for the replace function.

user3514930
  • 1,721
  • 1
  • 9
  • 7