数据到Excel复合折线图

时间:2014-08-13 08:04:50

标签: excel excel-vba excel-2013 vba

我在将数据填充到复合折线图中时遇到了一些困难

工作日我有以下数据(星期日,星期一,星期二......星期六)*小时(0,1,2,3 ... 23)*分钟(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

是否可以将此结构填充到图表中?因为我正在进行大量的手动过程,例如将各个工作日及其各自的值重新排列到单独的列中以创建图表。我有10张相似的表格来重复这个过程。有没有办法自动化工作表或这些数据的任何通用程序来生成图形图?

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:如果这是一个简单的过程,请原谅。我对excel不太熟练。我和一个比我更了解的人谈过,他的建议是在将数据重新排列到单个列并将其应用于多个表时记录宏。至于,我需要更多建议,我在这里发布这个问题。

谢谢!

编辑[13/08/2014]: 我刚才有机会研究数据透视表。创建了一个连接小时/分钟字段的新时间列。但是,仍然需要为每张纸做一些手动过程来生成枢轴数据和图表。

enter image description here enter image description here

1 个答案:

答案 0 :(得分:0)

我改变了......
使用以下公式添加列D:

D2 -> =B2+C2/60

拥有时间价值。使用宏:

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

代码生成多线图 不添加列:

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

新代码重建了图表的公式...
仔细使用第二个代码,因为数字是像“,”那样的显示器,但插入像“。”。
那就是替换功能的原因。