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