' =====================================================
' ПРИМЕР 1. Функция СКИДКА_СЛОЖНАЯ
' =====================================================
Function СКИДКА_СЛОЖНАЯ(x As Double) As Double
Const const1 As Double = 100
Const const2 As Double = 150
If x <= 1000 Then
СКИДКА_СЛОЖНАЯ = 0
ElseIf x <= 2000 Then
СКИДКА_СЛОЖНАЯ = (x - 1000) * 0.1
ElseIf x <= 3000 Then
СКИДКА_СЛОЖНАЯ = (x - 2000) * 0.15 + const1
Else
СКИДКА_СЛОЖНАЯ = (x - 3000) * 0.2 + const2 + const1
End If
End Function
' =====================================================
' ПРИМЕР 2. Функция Discont2 (скидка по покупателю)
' =====================================================
Function Discont2(Покупатель As String, ВсеПокупатели As Range, СуммыРеализации As Range) As Double
Dim N As Integer
Dim i As Integer
Dim s As Double
Dim k As Integer
N = ВсеПокупатели.Rows.Count
s = 0
k = 0
For i = 1 To N
If ВсеПокупатели(i, 1).Value = Покупатель Then
k = k + 1
s = s + СуммыРеализации(i, 1).Value
End If
Next i
If s >= 10000 Then
Discont2 = 3
ElseIf s >= 5000 Then
Discont2 = 2
ElseIf k > 3 Then
Discont2 = 1
Else
Discont2 = 0
End If
End Function
' =====================================================
' ПРИМЕР 3. Кнопка "Расчёт сумм" (сумма выделенного диапазона)
' =====================================================
Sub Расчет_сумм_Щелчок()
Dim cell As Range
Dim summa As Double
summa = 0
For Each cell In Selection
If IsNumeric(cell.Value) Then
summa = summa + cell.Value
End If
Next cell
MsgBox "Сумма выделенных чисел: " & summa
End Sub
' =====================================================
' ПРИМЕР 4. Кнопка "Расчет" (итоги по таблице товаров)
' =====================================================
Sub Расчет()
Dim lastRow As Long
Dim i As Long
' Определяем последнюю заполненную строку в столбце A
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
' Если данных нет — выходим
If lastRow < 2 Then
MsgBox "Нет данных для расчёта"
Exit Sub
End If
' Итоговая строка
Cells(lastRow + 1, 1).Value = "ИТОГО"
Cells(lastRow + 1, 2).Formula = "=SUM(B2:B" & lastRow & ")"
Cells(lastRow + 1, 3).Formula = "=SUM(C2:C" & lastRow & ")"
' Отклонение (факт - прогноз)
Cells(lastRow + 1, 4).Formula = "=C" & lastRow + 1 & "-B" & lastRow + 1
' Процент выполнения плана
Cells(lastRow + 1, 5).Formula = "=C" & lastRow + 1 & "/B" & lastRow + 1
' Удельный вес факта по каждой строке
For i = 2 To lastRow
Cells(i, 6).Formula = "=C" & i & "/C$" & lastRow + 1
Next i
' Форматируем проценты
Range(Cells(2, 6), Cells(lastRow + 1, 6)).NumberFormat = "0.00%"
Range(Cells(2, 5), Cells(lastRow + 1, 5)).NumberFormat = "0.00%"
MsgBox "Расчёт завершён!"
End Sub