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


Sub Razdelenie_LIC_ALAE()

    ' Переменные
    Dim ws As Worksheet
    Dim newWs As Worksheet
    Dim lastRow As Long
    Dim lastCol As Long
    Dim i As Long
    Dim newRow As Long
    Dim amount As Double

    ' Ускоряем работу Excel
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Application.EnableEvents = False

    ' Исходный лист
    Set ws = ThisWorkbook.Worksheets("LIC ALAE")

    ' Создаём новый лист
    Set newWs = ThisWorkbook.Worksheets.Add(After:=ws)
    newWs.Name = "LIC ALAE результат"

    ' Определяем последнюю строку
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

    ' Определяем последний используемый столбец
    lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column

    ' Копируем заголовки
    ws.Range(ws.Cells(1, 1), ws.Cells(1, lastCol)).Copy _
        Destination:=newWs.Cells(1, 1)

    ' Первая строка для данных
    newRow = 2

    ' Перебираем исходные строки
    For i = 2 To lastRow

        ' Если в F стоит "прочее"
        If LCase(Trim(ws.Cells(i, "F").Value)) = "прочее" _
           And IsNumeric(ws.Cells(i, "D").Value) _
           And ws.Cells(i, "D").Value <> "" Then

            ' Запоминаем исходную сумму
            amount = ws.Cells(i, "D").Value

            ' Первая строка — ОСАГО Физ, 87%
            ws.Range(ws.Cells(i, 1), ws.Cells(i, lastCol)).Copy _
                Destination:=newWs.Cells(newRow, 1)

            newWs.Cells(newRow, "A").Value = "ОСАГО Физ"
            newWs.Cells(newRow, "D").Value = amount * 0.87

            newRow = newRow + 1

            ' Вторая строка — ОСАГО Юр, 13%
            ws.Range(ws.Cells(i, 1), ws.Cells(i, lastCol)).Copy _
                Destination:=newWs.Cells(newRow, 1)

            newWs.Cells(newRow, "A").Value = "ОСАГО Юр"
            newWs.Cells(newRow, "D").Value = amount * 0.13

            newRow = newRow + 1

        Else

            ' Судебные и неустойка копируем как есть
            ws.Range(ws.Cells(i, 1), ws.Cells(i, lastCol)).Copy _
                Destination:=newWs.Cells(newRow, 1)

            newRow = newRow + 1

        End If

    Next i

    ' Автоматическая ширина столбцов
    newWs.Columns.AutoFit

    ' Возвращаем настройки Excel
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
    Application.EnableEvents = True

    MsgBox "Готово! Создан лист: LIC ALAE результат"

End Sub