Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 为第1行合并单元格中包含文本的多个图表提供标题_Excel_Vba_Charts_Title - Fatal编程技术网

Excel 为第1行合并单元格中包含文本的多个图表提供标题

Excel 为第1行合并单元格中包含文本的多个图表提供标题,excel,vba,charts,title,Excel,Vba,Charts,Title,这个链接显示了我通过运行下面给出的代码获得的示例数据和图表。我有动态的部门数量 我希望每个图表将标题作为各自的部门名称,即每个图表数据上方每个合并单元格中给出的名称 请给我一个相同的代码 Option Explicit Sub PlotSeparateChartsByMergedFirstRow() Dim rUsed As Range, rMerged As Range, rChtData As Range Dim rChtDat1 As Range, rChtDat2 As Ran

这个链接显示了我通过运行下面给出的代码获得的示例数据和图表。我有动态的部门数量

我希望每个图表将标题作为各自的部门名称,即每个图表数据上方每个合并单元格中给出的名称

请给我一个相同的代码

 Option Explicit

 Sub PlotSeparateChartsByMergedFirstRow()
 Dim rUsed As Range, rMerged As Range, rChtData As Range
 Dim rChtDat1 As Range, rChtDat2 As Range
 Dim iColMerge As Long, iColData As Long
 Dim cht1 As Chart, cht2 As Chart

 Const iChtHeight As Double = 175

 Set rUsed = ActiveSheet.UsedRange
 iColMerge = 1

 Do
 iColMerge = iColMerge + 1
 If iColMerge > rUsed.Columns.Count Then Exit Do

 If rUsed.Cells(1, iColMerge).MergeCells Then
 Set rMerged = rUsed.Cells(1, iColMerge).MergeArea
 Set rChtData = rMerged.Resize(rUsed.Rows.Count)

 ' x values
 Set rChtDat1 = rUsed.Columns(1)
 Set rChtDat2 = rUsed.Columns(1)

 ' y values
 For iColData = 1 To rChtData.Columns.Count - 1 Step 2
 Set rChtDat1 = Union(rChtDat1, rChtData.Columns(iColData))
 Set rChtDat2 = Union(rChtDat2, rChtData.Columns(iColData + 1))
 Next

 ' charts
 ' 2007, 2010
 Set cht1 = ActiveSheet.Shapes.AddChart(xlColumnClustered, rChtData.Left,        rChtData.Height, rChtData.Width, iChtHeight).Chart

 With cht1
 .SetSourceData rChtDat1, xlColumns
 End With

 ' 2007, 2010
 Set cht2 = ActiveSheet.Shapes.AddChart(xlColumnClustered, rChtData.Left, rChtData.Height + iChtHeight, rChtData.Width, iChtHeight).Chart

 With cht2
 .SetSourceData rChtDat2, xlColumns
 End With

 nd If
 iColMerge = iColMerge + rMerged.Columns.Count - 1
 Loop

 End Sub

确保图表有标题,然后将标题链接到第一行中合并块的第一个单元格

With cht1
    .SetSourceData rChtDat1, xlColumns
    .HasTitle = True
    .ChartTitle.Text = "=" & rUsed.Cells(1, iColMerge).Address(, , , True)
End With

伟大的把它标记为答案。