将图表排列成网格

在 Excel 中使用图表的常见工作是在单张纸上标准化多个图表的大小和布局。如果手动完成,你可以 ALT 在调整图表大小或移动图表时按住 粘贴到单元格边界。这适用于几个图表,但 VBA 方法更简单。

用于创建网格的代码

此代码将创建一个图表网格,从给定(顶部,左侧)位置开始,具有已定义的列数和已定义的常用图表大小。图表将按照创建顺序放置,并围绕边缘以形成新行。

Sub CreateGridOfCharts()

    Dim int_cols As Integer
    int_cols = 3
    
    Dim cht_width As Double
    cht_width = 250
        
    Dim cht_height As Double
    cht_height = 200
    
    Dim offset_vertical As Double
    offset_vertical = 195
    
    Dim offset_horz As Double
    offset_horz = 40

    Dim sht As Worksheet
    Set sht = ActiveSheet

    Dim count As Integer
    count = 0
    
    'iterate through ChartObjects on current sheet
    Dim cht_obj As ChartObject
    For Each cht_obj In sht.ChartObjects
        
        'use integer division and Mod to get position in grid
        cht_obj.Top = (count \ int_cols) * cht_height + offset_vertical
        cht_obj.Left = (count Mod int_cols) * cht_width + offset_horz
        cht_obj.Width = cht_width
        cht_obj.Height = cht_height

        count = count + 1

    Next cht_obj
End Sub

几个图表的结果

这些图片显示了图表的原始随机布局以及运行上述代码的结果网格。

之前

StackOverflow 文档

StackOverflow 文档