Загрузка данных


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