在Excel中分组堆积图表

时间:2014-06-18 09:06:09

标签: excel charts stacked

我在Excel中有以下数据。

  

项目|月|呼叫已创建|打开电话|已关闭的电话

     

请求| 2012年12月| 15 | 11 | 7

     

请求| 2013年1月| 6 | 8 | 9

     

请求| 2013年2月| 6 | 5 | 2

     

dotcom | 2012年12月| 1 | |

     

dotcom | 2013年1月| | 1 |

     

dotcom | 2013年2月| 1 | 2 | 1

数据只是一小部分。对于完整数据集,将有四个项目,日期范围从2012年到2014年6月

我正在尝试创建一个图表,对于月份和每个项目,数据都是条形堆叠,而上面的X轴是月份

我附上了一份我希望制作的图表模型 Chart Image Required

如果我只想使用Calls Created,Open Calls,Closed Calls,我可以创建堆积条形图。但是我需要一个将所有三个结合起来的图表

1 个答案:

答案 0 :(得分:1)

我告诉你我的想法。如果可以的话,它很容易适应...... 遵循该计划:

enter image description here

你有类似的东西,但使用简单的图表栏。诀窍是以正确的方式转换数据。为此,我使用了VBA,因为它更灵活......
在连接到按钮的模块内使用此代码(更新)......:

Dim N0(1 To 100) As String
Dim N1(1 To 100) As String
Dim N2(1 To 100) As String
Dim N3(1 To 100) As String

Range("B14:H44").Clear

Range("B1").Select
e = 0
For i = 1 To 9999
    If ActiveCell.Offset(i, 0).Value = "" Then Exit For
    e = e + 1
    N0(e) = ActiveCell.Offset(i, 0).Value
    N1(e) = ActiveCell.Offset(i, 1).Value
    N2(e) = ActiveCell.Offset(i, 2).Value
    N3(e) = ActiveCell.Offset(i, 3).Value
Next

Range("B15").Select
For i = 1 To e
    If (i > 1) And (N0(i) = N0(1)) Then Exit For
    ActiveCell.Offset((i - 1) * 4, 0).Value = "["
    ActiveCell.Offset((i - 1) * 4 + 1, 0).Value = N0(i)
    ActiveCell.Offset((i - 1) * 4 + 2, 0).Value = "]"
    ActiveCell.Offset((i - 1) * 4 + 3, 0).Value = ""
Next
nRep = i - 1
Debug.Print nRep

nrow = 0
For i = 1 To e
    If (i > nRep) And (N0(i) = N0(1)) Then nrow = nrow + 1
    For k = 1 To 99
        If ActiveCell.Offset((k - 1) * 4 + 1, 0).Value = "" Then Exit For
        If ActiveCell.Offset((k - 1) * 4 + 1, 0).Value = N0(i) Then
            ActiveCell.Offset((k - 1) * 4, 1 + nrow).Value = N1(i)
            ActiveCell.Offset((k - 1) * 4 + 1, 1 + nrow).Value = N2(i)
            ActiveCell.Offset((k - 1) * 4 + 2, 1 + nrow).Value = N3(i)
        End If
    Next
Next

宏为图表生成新范围数据...空白行用于视觉分割Mounth底部的条形图...
之后,手动或者您更喜欢通过VBA,您可以调整图表(减小间隙宽度,添加标签......)