Sub CreateTableAndChart()
Dim ws As Worksheet
Set ws = ActiveSheet
ws.Cells.Clear
' 1. Заголовок таблицы
ws.Range("A1:E1").Merge
ws.Range("A1").Value = "Анализ продаж"
ws.Range("A1").HorizontalAlignment = xlCenter
ws.Range("A1").Font.Bold = True
' 2. Шапка таблицы
ws.Range("A2").Value = "№"
ws.Range("B2").Value = "Наименование"
ws.Range("C2").Value = "Цена, руб."
ws.Range("D2").Value = "Кол-во"
ws.Range("E2").Value = "Сумма, руб."
ws.Range("A2:E2").HorizontalAlignment = xlCenter
ws.Range("A2:E2").Font.Bold = True
' 3. Исходные данные и формулы суммы
Dim names As Variant, prices As Variant, qtys As Variant
names = Array("Туфли", "Сапоги", "Куртки", "Юбки", "Шарфы", "Зонты", "Перчатки", "Варежки")
prices = Array(820, 1530, 1500, 250, 125, 80, 120, 50)
qtys = Array(150, 60, 25, 40, 80, 50, 120, 40)
Dim i As Integer, r As Integer
For i = 0 To 7
r = i + 3
ws.Cells(r, 1).Value = i + 1
ws.Cells(r, 1).HorizontalAlignment = xlCenter
ws.Cells(r, 2).Value = names(i)
ws.Cells(r, 3).Value = prices(i)
ws.Cells(r, 4).Value = qtys(i)
ws.Cells(r, 4).HorizontalAlignment = xlCenter
ws.Cells(r, 5).Formula = "=C" & r & "*D" & r
Next i
' 4. Итоги, МИН и МАКС
ws.Range("D11").Value = "Всего"
ws.Range("D11").HorizontalAlignment = xlCenter
ws.Range("E11").Formula = "=SUM(E3:E10)"
ws.Range("B13:D13").Merge
ws.Range("B13").Value = "Минимальная сумма покупки"
ws.Range("B13").HorizontalAlignment = xlRight
ws.Range("E13").Formula = "=MIN(E3:E10)"
ws.Range("B14:D14").Merge
ws.Range("B14").Value = "Максимальная сумма покупки"
ws.Range("B14").HorizontalAlignment = xlRight
ws.Range("E14").Formula = "=MAX(E3:E10)"
' 5. Форматирование чисел и сетка таблицы
ws.Range("C3:C10, E3:E11, E13:E14").NumberFormat = "0.00"
ws.Range("A1:E14").Borders.LineStyle = xlContinuous
ws.Columns("A:E").AutoFit
' 6. Построение круговой диаграммы справа от таблицы (ячейка G1)
Dim chObj As ChartObject
Set chObj = ws.ChartObjects.Add(Left:=ws.Range("G1").Left, Top:=ws.Range("G1").Top, Width:=360, Height:=240)
With chObj.Chart
.ChartType = xlPie
.SetSourceData Source:=Union(ws.Range("B2:B10"), ws.Range("E2:E10"))
.HasTitle = True
.ChartTitle.Text = "Сумма продаж, руб."
.ApplyDataLabels xlDataLabelsShowPercent
End With
End Sub