📜  高级Excel-华夫饼图(1)

📅  最后修改于: 2023-12-03 14:58:51.721000             🧑  作者: Mango

高级Excel-华夫饼图

简介

华夫饼图是一种新型的数据可视化图表,它采用类似于蛋糕印模的design与传统饼图的结合,呈现出更加优美的效果。它适用于需要同时展示大量数据和各个数据分块之间比例关系的场景。

在Excel中使用华夫饼图需要借助Power Query和VBA,稍有一定的编程基础便可以轻松上手。本文将详细介绍如何在Excel中绘制华夫饼图。

实现步骤
第一步:准备数据

准备区分度较高的实际数据,如下表所示:

| | 组1 | 组2 | 组3 | 组4 | 组5 | 总计 | | :-: | :-: | :-: | :-: | :-: | :-: | :-: | | A | 20 | 30 | 60 | 50 | 10 | 170 | | B | 30 | 30 | 30 | 30 | 30 | 150 | | C | 20 | 10 | 20 | 30 | 60 | 140 | | D | 50 | 10 | 20 | 20 | 20 | 120 | | E | 30 | 30 | 10 | 20 | 40 | 130 | | F | 10 | 10 | 20 | 30 | 50 | 120 | | G | 40 | 30 | 40 | 30 | 20 | 160 | | H | 10 | 20 | 40 | 10 | 20 | 100 | | I | 20 | 20 | 50 | 10 | 20 | 120 |

其中,每个组的数据需要总和为100。

第二步:导入Power Query数据透视表

使用Power Query导入数据透视表,使各组间的比例关系更加明显。步骤如下:

  1. 选中数据表格中的任意一个单元格,点击“数据”选项卡中的“从范围取数据”;
  2. 点击“从范围取数据”后,在弹出的窗口中,按“Enter”键确认并导入数据;
  3. 选中导入的数据,点击“数据”选项卡中的“从表格/范围”选项,选择“转换为表”;
  4. 在弹出的窗口中,将“我的表格中包括列头”选项勾选后点击“确定”;
  5. 选中表格中任意一个单元格,点击“数据”选项卡中的“从表格/范围”选项,选择“透视表”;
  6. 在弹出的窗口中,拖动“总计”字段到“值”区域,将“组1”至“组5”的字段分别拖动到“行”区域,所得的透视表如下所示。

| 行 | 总计 | | :------ | :------- | | 组1 | 20 | | 组2 | 30 | | 组3 | 60 | | 组4 | 50 | | 组5 | 10 | | Grand | 170 | | 组1% | 11.7647% | | 组2% | 17.6471% | | 组3% | 35.2941% | | 组4% | 29.4118% | | 组5% | 5.8824% | | 总计% | 100% | | Grand% | 100% |

第三步:导入VBA代码

为了绘制华夫饼图,我们需要导入一段VBA代码。具体步骤如下:

  1. 按下“Alt + F11”进入VBA开发环境;
  2. 选择“Insert”->“Module”,在新建模块中输入以下代码:
Public Sub createWaffleChart()
    Dim chtTop As Long
    Dim chtLeft As Long
    Dim chtHeight As Long
    Dim chtWidth As Long
    Dim x As Long
    Dim y As Long
    Dim r As Long
    
    chtTop = Sheet1.Range("D2").Top
    chtLeft = Sheet1.Range("D2").Left
    chtHeight = Sheet1.Range("D2:F8").Height
    chtWidth = Sheet1.Range("D2:F8").Width
    
    ' Delete any existing chart on the sheet
    On Error Resume Next
    Sheet1.ChartObjects("waffleChart").Delete
    
    Set oChart = Sheet1.Shapes.AddChart2(250, xlPie, chtLeft, chtTop, chtWidth, chtHeight)
    oChart.Name = "waffleChart"
    
    For y = 5 To 1 Step -1
        For x = 1 To 5
            r = r + 1
            If r <= Sheet1.Range("G2").Value Then
                oChart.Chart.FullSeriesCollection(1).Points(r).Format.Fill.ForeColor.RGB = Sheet1.Cells(2 + y + 8 * (x - 1), 3).Interior.Color
            End If
        Next x
    Next y
End Sub

这段代码所表达的功能是:在当前活动sheet的D2单元格中创建一个华夫饼图,并根据数据表格和Power Query表格的内容进行填充色彩。

第四步:生成华夫饼图
  1. 定位到导入了Power Query表格的sheet,并选中“值”列;
  2. 在“数据”选项卡中,点击“将选定单元格转换为不同配置”选项卡,选择“图表”;
  3. 在弹出的“图表预览”窗口中,选择“饼图”;
  4. 点击“确定”即可生成初始的饼图。
第五步:应用VBA代码并渲染颜色
  1. 切换到VBA开发环境;
  2. 选中createWaffleChart方法后单击“执行 F5”,或直接选中方法后按下“Ctrl + Enter”;
  3. 切回Excel工作表,查看已成功绘制出华夫饼图。
结论

华夫饼图不仅带来了新鲜的视觉效果,同时也帮助我们更清楚地了解数据之间的比例关系,从而更好地做出有针对性的决策。虽然在Excel中绘制华夫饼图需要借助Power Query和VBA,但随着Excel等办公软件不断发展,我们相信这些步骤会变得简单起来。