【问题标题】:Grouped Stacked Chart in ExcelExcel中的分组堆积图
【发布时间】:2014-06-18 09:06:09
【问题描述】:

我在 Excel 中有以下数据。

项目 |月 |通话创建 |公开电话 |结束通话

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

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

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

互联网 | 2012 年 12 月 | 1 | |

互联网 | 2013 年 1 月 | | 1 |

互联网 | 2013 年 2 月 | 1 | 2 | 1

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

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

我附上了我要制作的图表模型

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

【问题讨论】:

  • 有点接近的方法...如果您同意重组数据(使用VBA),则可能是使用普通条形图...
  • 我将尝试 VBA 路由。但是我对VBA的了解是有限的。您能否链接到任何可以让我了解如何执行此操作的文章/博客文章
  • 为了将来参考,我写了一个教程来展示如何在 Excel 中生成一个聚集堆积柱形图(或条形图):peltiertech.com/clustered-stacked-column-bar-charts

标签: excel charts stacked


【解决方案1】:

我告诉你我的想法。如果没问题,适应起来很简单...
按照方案:

你有你需要的东西,但使用一个简单的图表栏。诀窍是以正确的方式转换数据。为此,我使用了 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

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

【讨论】:

  • 这很棒。一旦我有正确的格式来构建 Excel 中的基础数据,我就可以为我的图表添加所有其他项目和时间段。非常感谢你。希望管理层会满意;-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-09
  • 1970-01-01
  • 1970-01-01
  • 2020-11-10
  • 2021-04-18
  • 1970-01-01
相关资源
最近更新 更多