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


Sub Myyntilaskelma2()

    Dim ws As Worksheet
    Dim c As Long
    Dim chartObj As ChartObject

    Set ws = ActiveSheet

    ' 1. Kulut yhteensä
    For c = 2 To 5
        ws.Cells(15, c).Formula = "=SUM(" & _
            ws.Cells(12, c).Address(False, False) & ":" & _
            ws.Cells(14, c).Address(False, False) & ")"
    Next c

    ' 2. Tuotto = Myynti - Kulut yhteensä
    For c = 2 To 5
        ws.Cells(17, c).Formula = "=" & _
            ws.Cells(10, c).Address(False, False) & "-" & _
            ws.Cells(15, c).Address(False, False)
    Next c

    ' 3. Tuotto %
    For c = 2 To 5
        ws.Cells(18, c).Formula = "=" & _
            ws.Cells(17, c).Address(False, False) & "/" & _
            ws.Cells(10, c).Address(False, False)
    Next c

    ' Формат процентов
    ws.Range("B18:E18").NumberFormat = "0.0%"

    ' Формат денег
    ws.Range("B15:E17").NumberFormat = "#,##0"

    ' Удаляем старую диаграмму, если есть
    For Each chartObj In ws.ChartObjects
        chartObj.Delete
    Next chartObj

    ' 4. Столбчатая диаграмма прибыли
    Set chartObj = ws.ChartObjects.Add( _
        Left:=ws.Range("B20").Left, _
        Top:=ws.Range("B20").Top, _
        Width:=500, _
        Height:=280)

    With chartObj.Chart
        .ChartType = xlColumnClustered
        .SetSourceData Source:=ws.Range("B17:E17")
        .HasTitle = True
        .ChartTitle.Text = "Tuotot"
        .HasLegend = False
        .Axes(xlCategory).CategoryNames = ws.Range("B8:E8")
    End With

    MsgBox "Valmis! Kaikki tehty.", vbInformation

End Sub