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


Sub CreateReportTable()
    Dim ws As Worksheet
    Dim i As Integer
    Dim months As Variant, plans As Variant, facts As Variant
    
    ' Создаем новый лист или очищаем текущий
    Set ws = ActiveSheet
    ws.Cells.Clear
    
    ' Массивы с данными
    months = Array("Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь")
    plans = Array(7800, 3560, 8900, 5460, 6570, 6540, 4900, 7890, 6540, 6540, 6540, 8900)
    facts = Array(8500, 2700, 7800, 4590, 7650, 5670, 5430, 8700, 6500, 6570, 6520, 10000)
    
    ' --- ШАПКА ТАБЛИЦЫ ---
    ws.Range("A1") = "№"
    ws.Range("B1") = "Месяц"
    ws.Range("C1") = "Отчетный год"
    ws.Range("C1:E1").Merge
    ws.Range("F1") = "Отклонение от плана"
    ws.Range("F1:F2").Merge
    
    ws.Range("C2") = "план, р."
    ws.Range("D2") = "фактически, р."
    ws.Range("E2") = "выполнение, %"
    
    ws.Range("B3") = "Mi"
    ws.Range("C3") = "Pi"
    ws.Range("D3") = "Fi"
    ws.Range("E3") = "Vi"
    ws.Range("F3") = "Oi"
    
    ' --- ЗАПОЛНЕНИЕ ДАННЫМИ И ФОРМУЛАМИ ---
    For i = 0 To 11
        ws.Cells(i + 4, 1) = i + 1
        ws.Cells(i + 4, 2) = months(i)
        ws.Cells(i + 4, 3) = plans(i)
        ws.Cells(i + 4, 4) = facts(i)
        
        ' Формула выполнения (Факт / План)
        ws.Cells(i + 4, 5).Formula = "=D" & (i + 4) & "/C" & (i + 4)
        
        ' Формула отклонения (Факт - План)
        ws.Cells(i + 4, 6).Formula = "=D" & (i + 4) & "-C" & (i + 4)
    Next i
    
    ' --- ИТОГИ (МАКСИМУМ И СРЕДНЕЕ) ---
    ws.Range("D16") = "Максимум"
    ws.Range("D17") = "Среднее"
    
    ws.Range("C16").Formula = "=MAX(C4:C15)"
    ws.Range("D16").Formula = "=MAX(D4:D15)"
    ws.Range("E16").Formula = "=MAX(E4:E15)"
    ws.Range("F16").Formula = "=MAX(F4:F15)"
    
    ws.Range("C17").Formula = "=AVERAGE(C4:C15)"
    ws.Range("D17").Formula = "=AVERAGE(D4:D15)"
    ws.Range("E17").Formula = "=AVERAGE(E4:E15)"
    ws.Range("F17").Formula = "=AVERAGE(F4:F15)"
    
    ' --- ОФОРМЛЕНИЕ (ФОРМАТИРОВАНИЕ) ---
    With ws.Range("A1:F17")
        .Borders.LineStyle = xlContinuous ' Рамки
        .HorizontalAlignment = xlCenter     ' Выравнивание по центру
        .VerticalAlignment = xlCenter       ' Выравнивание по высоте
    End With
    
    ' Жирный шрифт для шапки и итогов
    ws.Range("A1:F3").Font.Bold = True
    ws.Range("D16:D17").Font.Bold = True
    
    ' Выравнивание месяцев по левому краю
    ws.Range("B4:B15").HorizontalAlignment = xlLeft
    
    ' Формат чисел (рубли для C, D, F столбцов)
    ws.Range("C4:D15, F4:F15, C16:D17, F16:F17").NumberFormat = "# ##0.00"" р."""
    
    ' Формат чисел (проценты для E)
    ws.Range("E4:E15, E16:E17").NumberFormat = "0.00%"
    
    ' Автоподбор ширины столбцов
    ws.Columns("A:F").AutoFit
    ws.Rows("1:3").RowHeight = 30 ' Высота шапки
    
    MsgBox "Таблица успешно создана и оформлена!", vbInformation
End Sub