Вы получаете четыре диаграммы, хотя у вас есть только две сводные таблицы, потому что у вас есть два цикла и вам нужен только один.
Внутренний цикл For Each pivot In sh.PivotTables
проходит по каждой сводной таблице, как и внешний цикл For nrp = 1 To sh.PivotTables.Count
.Таким образом, вы получите 2 графика для каждой сводной таблицы.
Вместо использования Charts.Add
я предлагаю использовать ChartObjects.Add
, что создает встроенный график и позволяет контролировать размещение иsize.
Тогда вам также необходимо SetSourceData
.
Пример может выглядеть так:
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