Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.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 为每个数据透视表创建一个图表_Excel_Vba_Charts_Pivot - Fatal编程技术网

Excel 为每个数据透视表创建一个图表

Excel 为每个数据透视表创建一个图表,excel,vba,charts,pivot,Excel,Vba,Charts,Pivot,在我的活动工作表中,我有两个数据透视表(数据透视表1和数据透视表2),但有时它们可能更复杂。 我正在尝试为活动工作表中的每个PT添加图表。到目前为止,我提出了这个代码,但它给了我4个图表,3个空白图表,如果选择了一个PT,则是一个正确的图表 Sub CreateChart1() Dim pivot As PivotTable, sh As Worksheet, nrp As Long Set sh = ThisWorkbook.Sheets("Sheet1") For nrp = 1 To

在我的活动工作表中,我有两个数据透视表(数据透视表1和数据透视表2),但有时它们可能更复杂。 我正在尝试为活动工作表中的每个PT添加图表。到目前为止,我提出了这个代码,但它给了我4个图表,3个空白图表,如果选择了一个PT,则是一个正确的图表

Sub CreateChart1()

Dim pivot As PivotTable, sh As Worksheet, nrp As Long

Set sh = ThisWorkbook.Sheets("Sheet1")

For nrp = 1 To sh.PivotTables.Count

 Set pivot = ActiveSheet.PivotTables(nrp)
    For Each pivot In sh.PivotTables
        Charts.Add
        ActiveChart.Location Where:=xlLocationAsObject, Name:=pivot.Parent.Name
    Next pivot
Next nrp

End Sub
谁能解释一下我做错了什么

感谢您的帮助

谢谢


尼克。

即使你只有两个数据透视表,你也会得到四个图表,因为你有两个循环,只需要一个

sh.PivotTables中每个pivot的内部循环
通过每个pivot表循环,nrp=1到sh.PivotTables.Count的外部循环
。因此,每个数据透视表将有两个图表

不要使用
图表。添加
我建议使用,它可以创建一个嵌入式图表,并且可以控制位置和大小

然后还需要
设置资源数据

示例可能如下所示:

Sub AddPivotChart()
    Dim pivotTbl As PivotTable, ws As Worksheet

    Set ws = ThisWorkbook.Sheets("Sheet2")

    For Each pivotTbl In ws.PivotTables
        Dim chtObj As ChartObject
        Set chtObj = ws.ChartObjects.Add(50, 50, 200, 200) ' adjust as needed

        chtObj.Name = pivotTbl.Name
        chtObj.Chart.SetSourceData pivotTbl.TableRange1
    Next pivotTbl
End Sub

即使只有两个数据透视表,您也会得到四个图表,因为您有两个循环,并且只需要一个

sh.PivotTables中每个pivot的内部循环
通过每个pivot表循环,nrp=1到sh.PivotTables.Count的外部循环
。因此,每个数据透视表将有两个图表

不要使用
图表。添加
我建议使用,它可以创建一个嵌入式图表,并且可以控制位置和大小

然后还需要
设置资源数据

示例可能如下所示:

Sub AddPivotChart()
    Dim pivotTbl As PivotTable, ws As Worksheet

    Set ws = ThisWorkbook.Sheets("Sheet2")

    For Each pivotTbl In ws.PivotTables
        Dim chtObj As ChartObject
        Set chtObj = ws.ChartObjects.Add(50, 50, 200, 200) ' adjust as needed

        chtObj.Name = pivotTbl.Name
        chtObj.Chart.SetSourceData pivotTbl.TableRange1
    Next pivotTbl
End Sub

嗨,大本钟,非常感谢,老兄