Sub RunTSP() Set shdto = ActiveWorkbook.Worksheets(1) Set shdfrom = ActiveWorkbook.Worksheets(2) For Each r In Range("KeyStrings") Next r End Sub Function MyFormatMLN(ByVal number As Double) As Variant MyFormatMLN = FormatNumber(number / 1000, 2) & " млн. руб." End Function Sub test2() On Error Resume Next Set shdto = ActiveWorkbook.Worksheets(1) Set shdfrom = ActiveWorkbook.Worksheets(2) YearRow = shdfrom.Range("1:30").Find("Наименование показателя").Row LastColumn = shdfrom.Cells(YearRow, Columns.count).End(xlToLeft).Column '7 'shdfrom.Cells.SpecialCells(xlLastCell).Column InterestPayable = 1 If shdto.Range("B4").Value = "Платежная дисциплина Дебитора." Then shdto.Range("E10:F25") = "" End If For i = 1 To 100 '-11 строка ------------------------------- If shdfrom.Range("B" & i) = 2400 Then If shdfrom.Cells(i, LastColumn) < 0 Then shdto.Range("E11") = "Убыток по итогам " & shdfrom.Cells(YearRow, LastColumn) & " года составляет " & MyFormatMLN(shdfrom.Cells(i, LastColumn)) Else shdto.Range("E11") = "" shdto.Range("F11") = "Прибыль по итогам " & shdfrom.Cells(YearRow, LastColumn) & " года составляет " & MyFormatMLN(shdfrom.Cells(i, LastColumn)) End If End If '----------------------------------------- '-12 строка ------------------------------- Select Case shdfrom.Range("B" & i) Case 1410: Debt = shdfrom.Cells(i, LastColumn) Debt0 = shdfrom.Cells(i, LastColumn).Offset(0, -1) GoTo Nexti Case 1510: Debt = Debt + shdfrom.Cells(i, LastColumn) Debt0 = Debt0 + shdfrom.Cells(i, LastColumn).Offset(0, -1) GoTo Nexti Case 2110: Sales = shdfrom.Cells(i, LastColumn) Sales0 = shdfrom.Cells(i, LastColumn).Offset(0, -1) GoTo Nexti Case 2200: EBIT = shdfrom.Cells(i, LastColumn) GoTo Nexti Case 2330: InterestPayable = shdfrom.Cells(i, LastColumn) GoTo Nexti End Select '----------------------------------------- '13 строка ------------------------------- If shdfrom.Range("B" & i) = 1300 Then NA = shdfrom.Cells(i, LastColumn) NA0 = shdfrom.Cells(i, LastColumn).Offset(0, -1) If (NA - NA0) < 0 Then shdto.Range("E13") = "ЧА снизились на " & MyFormatMLN(NA - NA0) & " (" & FormatPercent(NA / NA0 - 1, 2) & ")" Else shdto.Range("E13") = "" shdto.Range("F13") = "ЧА Увеличилась на " & MyFormatMLN(NA - NA0) & " (" & FormatPercent(NA / NA0 - 1, 2) & ")" End If End If '----------------------------------------- '-14 строка ------------------------------- If shdfrom.Range("B" & i) = 1520 Then KZ = shdfrom.Cells(i, LastColumn) KZ0 = shdfrom.Cells(i, LastColumn).Offset(0, -1) End If '------------------------------------------ '2200 прибыль убыток от продаж ------------------------ If shdfrom.Range("B" & i) = 1520 Then KZ = shdfrom.Cells(i, LastColumn) KZ0 = shdfrom.Cells(i, LastColumn).Offset(0, -1) End If '------------------------------------------------------ '2400 прибыль убыток от продаж ------------------------ If shdfrom.Range("B" & i) = 2400 Then NP = shdfrom.Cells(i, LastColumn) NP0 = shdfrom.Cells(i, LastColumn).Offset(0, -1) End If '------------------------------------------------------ Select Case shdfrom.Range("B" & i) Case 1230: DZ = shdfrom.Cells(i, LastColumn) DZ0 = shdfrom.Cells(i, LastColumn).Offset(0, -1) GoTo Nexti Case 1210: TMC = shdfrom.Cells(i, LastColumn) TMC0 = shdfrom.Cells(i, LastColumn).Offset(0, -1) GoTo Nexti Case 1170: KFV = shdfrom.Cells(i, LastColumn) KFV0 = shdfrom.Cells(i, LastColumn).Offset(0, -1) GoTo Nexti Case 1240: KFV = KFV + shdfrom.Cells(i, LastColumn) KFV0 = KFV0 + shdfrom.Cells(i, LastColumn).Offset(0, -1) GoTo Nexti End Select Nexti: Next i If IsEmpty(InterestPayable) Or InterestPayable = 0 Then InterestPayable = 1 '-12 строка ------------------------------- If Debt0 > 0 And Debt > 0 Then If (Debt / Debt0) > (Sales / Sales0) And (EBIT / InterestPayable) < 1.5 Then shdto.Range("E12") = "Динамика долга=" & FormatPercent((Debt / Debt0) - 1, 2) & vbNewLine & _ "Динамика выручки=" & FormatPercent((Sales / Sales0) - 1, 2) & vbNewLine & _ "Прибыль от продаж / проценты к уплате=" & FormatNumber(EBIT / InterestPayable, 2) Else shdto.Range("E12") = "" shdto.Range("F12") = "Динамика долга=" & FormatPercent(Debt / Debt0 - 1, 2) & vbNewLine & _ "Динамика выручки=" & FormatPercent(Sales / Sales0 - 1, 2) & vbNewLine & _ "Прибыль от продаж / проценты к уплате=" & FormatNumber(EBIT / InterestPayable, 2) End If Else shdto.Range("E12") = "" Debt0 = 1 shdto.Range("F12") = "Динамика выручки=" & FormatPercent(Sales / Sales0 - 1, 2) & vbNewLine & _ "Прибыль от продаж / проценты к уплате=" & FormatNumber(EBIT / InterestPayable, 2) End If '------------------------------------------ '-14 строка ------------------------------- If (KZ / KZ0) > (Sales / Sales0) And Sales > Sales0 Then shdto.Range("E14") = "КЗ увеличилась на " & MyFormatMLN(KZ - KZ0) & " (" & FormatPercent((KZ / KZ0) - 1, 2) & ")" Else shdto.Range("E14") = "" shdto.Range("F14") = "КЗ снизилась на " & MyFormatMLN(KZ - KZ0) & " (" & FormatPercent((KZ / KZ0) - 1, 2) & ")" End If '------------------------------------------ '-15 строка ------------------------------- If (Sales / Sales0) < 0.85 Then shdto.Range("E15") = "Выручка снизилась на " & MyFormatMLN(Sales - Sales0) & " (" & FormatPercent(Sales / Sales0 - 1, 2) & ")" Else shdto.Range("E15") = "" shdto.Range("F15") = "Выручка увеличилась на " & MyFormatMLN(Sales - Sales0) & " (" & FormatPercent(Sales / Sales0 - 1, 2) & ")" End If '------------------------------------------ '-16 строка ------------------------------- If (NP / NP0) < 0.5 And NP > 0 Then shdto.Range("E16") = "ЧП снизилась на " & MyFormatMLN(NP - NP0) & " (" & FormatPercent(NP / NP0 - 1, 2) & ")" ElseIf 1 > (NP / NP0) And (NP / NP0) > 0.5 Then shdto.Range("E16") = "" shdto.Range("F16") = "ЧП снизилась на " & MyFormatMLN(NP - NP0) & " (" & FormatPercent(NP / NP0 - 1, 2) & ")" Else shdto.Range("E16") = "" shdto.Range("F16") = "ЧП увеличилась на " & MyFormatMLN(NP - NP0) & " (" & FormatPercent(NP / NP0 - 1, 2) & ")" End If If NP < 0 Then shdto.Range("E16") = "ЧП отрицательная на " & MyFormatMLN(NP) & " ( годом ранее " & MyFormatMLN(NP0) & ")" shdto.Range("F16") = "ЧП снизилась на " & MyFormatMLN(NP - NP0) & " (" & FormatPercent(NP / NP0 - 1, 2) & ")" End If '------------------------------------------ '-17 строка ------------------------------- If (DZ / DZ0) > 1 And DZ0 <> 0 Then DDZ = "ДЗ увеличилась на " & MyFormatMLN(DZ - DZ0) & " (" & FormatPercent(DZ / DZ0 - 1, 2) & ")" Else DDZ = "ДЗ снизилась на " & MyFormatMLN(DZ - DZ0) & " (" & FormatPercent(DZ / DZ0 - 1, 2) & ")" End If If (TMC / TMC0) > 1 And TMC0 <> 0 Then TMC = "ТМЦ увеличились на " & MyFormatMLN(TMC - TMC0) & " (" & FormatPercent(TMC / TMC0 - 1, 2) & ")" Else TMC = "ТМЦ снизились на " & MyFormatMLN(TMC - TMC0) & " (" & FormatPercent(TMC / TMC0 - 1, 2) & ")" End If If (KFV / KFV0) > 1 And KFV0 <> 0 Then KFV = "КФВ увеличились на " & MyFormatMLN(KFV - KFV0) & " (" & FormatPercent(KFV / KFV0 - 1, 2) & ")" Else KFV = "КФВ снизились на " & MyFormatMLN(KFV - KFV0) & " (" & FormatPercent(KFV / KFV0 - 1, 2) & ")" End If shdto.Range("F17") = DDZ & vbNewLine & TMC & vbNewLine & KFV If NA - NA0 < 0 Then shdto.Range("E19") = "Выплачено дивидендов на сумму " & MyFormatMLN(NA0 - NA + NP) & " (" & FormatPercent((NA0 - NA + NP) / NA, 2) & ")" Else shdto.Range("E19") = "" shdto.Range("F19") = "Капитал увеличился на " & MyFormatMLN(NA - NA0) & " ( ЧП=" & MyFormatMLN(NP) & ")" End If If NA0 + NP <> NA Then shdto.Range("F19") = shdto.Range("F19") & vbNewLine & "Выплачено дивидендов на сумму " & MyFormatMLN(NA0 - NA + NP) & " (" & FormatPercent((NA0 - NA + NP) / NA, 2) & ")" End If '------------------------------------------ shdto.Range("E1:F200").WrapText = False End Sub |