SHOW:
|
|
- or go back to the newest paste.
| 1 | Option Explicit | |
| 2 | - | |
| 2 | + | |
| 3 | Row_Start As Integer | |
| 4 | Row_End As Integer | |
| 5 | Column_Start As Integer | |
| 6 | Column_End As Integer | |
| 7 | End Type | |
| 8 | Sub grow_control() | |
| 9 | - | |
| 9 | + | |
| 10 | - | |
| 10 | + | |
| 11 | Dim x As Variant '1ый раздел модели МОБ, где x(i,j) - сколько продуктов i-й отрасли надо затратить, чтобы обеспечить пр-во j-й отрасли | |
| 12 | - | |
| 12 | + | |
| 13 | Dim z As Variant '3ий раздел модели МОБ, где z(p,j) - первичное распледеление доходов от продаж по различным отраслям | |
| 14 | Dim Resource_Names, Process_Names, Consumers_Names As Variant 'Переменные, используемые для записи необходимых названий отраслей, потребителей и пр. | |
| 15 | Dim gdp_expenses As Double 'ВВП, рассчитанный по расходам на конечное потребление | |
| 16 | Dim gdp_income As Double 'ВВП, рассчитанный по доходам полученным от продаж продукции и ресурсов | |
| 17 | Dim gdp_3rd_method As Double 'ВВП по методу: ВВП=совокупные затраты покупателей на покупку продуктов - промежуточное потребление + импорт | |
| 18 | Dim all_consumers_expenses As Double 'Cовокупные затраты покупателей на покупку продуктов (Итого использовано в ценах покупателей) | |
| 19 | Dim intermediate_consumption_expenses As Double 'Расходы на промежуточное потребление | |
| 20 | Dim import As Double 'Совокупный импорт | |
| 21 | Dim production_expenses_matrix() As Double 'Матрица коэффициентов производственных затрат | |
| 22 | Dim production_final_consumption() As Variant 'Конечное потребление продукции отраслей | |
| 23 | Dim base() As Double 'База | |
| 24 | Dim net_income() As Double 'Чистые доходы | |
| 25 | Dim final_consumption_matrix() As Variant 'Матрица коэффициентов затрат на конечное потребление | |
| 26 | ThisWorkbook.Sheets("рост").Activate
| |
| 27 | For i = 1 To 3 | |
| 28 | With Parts_coordinate(i) | |
| 29 | - | Dim total_final_consumption() As Double 'Всего конечное потребление |
| 29 | + | |
| 30 | .Row_End = Cells(1 + i, 5) | |
| 31 | - | |
| 31 | + | |
| 32 | .Column_End = Cells(1 + i, 7) | |
| 33 | - | |
| 33 | + | |
| 34 | - | 'Сбор координат разделов |
| 34 | + | |
| 35 | Range(Cells(Parts_coordinate(1).Row_Start, Parts_coordinate(1).Column_Start), Cells(Parts_coordinate(1).Row_End, Parts_coordinate(1).Column_End)).Select | |
| 36 | x = Selection.Value 'Ubound(x,1) != Ubound(x,2) | |
| 37 | Range(Cells(Parts_coordinate(2).Row_Start, Parts_coordinate(2).Column_Start), Cells(Parts_coordinate(2).Row_End, Parts_coordinate(2).Column_End)).Select | |
| 38 | y = Selection.Value | |
| 39 | Range(Cells(Parts_coordinate(3).Row_Start, Parts_coordinate(3).Column_Start), Cells(Parts_coordinate(3).Row_End, Parts_coordinate(3).Column_End)).Select | |
| 40 | z = Selection.Value | |
| 41 | Range(Cells(Parts_coordinate(1).Row_Start - 2, Parts_coordinate(1).Column_Start), Cells(Parts_coordinate(1).Row_Start - 1, Parts_coordinate(1).Column_End)).Select | |
| 42 | Process_Names = Selection.Value | |
| 43 | - | 'Сбор данных из соответствующих разделов |
| 43 | + | Range(Cells(Parts_coordinate(1).Row_Start, Parts_coordinate(1).Column_Start - 1), |
| 44 | - | 'Сбор численной информации |
| 44 | + | |
| 45 | - | Range(Cells(Parts_coordinate(1).Row_Start, Parts_coordinate(1).Column_Start), _ |
| 45 | + | |
| 46 | - | Cells(Parts_coordinate(1).Row_End, Parts_coordinate(1).Column_End)).Select |
| 46 | + | |
| 47 | Range(Cells(Parts_coordinate(2).Row_Start - 2, Parts_coordinate(2).Column_Start), | |
| 48 | - | |
| 48 | + | |
| 49 | - | Range(Cells(Parts_coordinate(2).Row_Start, Parts_coordinate(2).Column_Start), _ |
| 49 | + | |
| 50 | - | Cells(Parts_coordinate(2).Row_End, Parts_coordinate(2).Column_End)).Select |
| 50 | + | |
| 51 | For k = 1 To UBound(y, 2): gdp_expenses = gdp_expenses + y(i, k): Next | |
| 52 | - | |
| 52 | + | |
| 53 | - | Range(Cells(Parts_coordinate(3).Row_Start, Parts_coordinate(3).Column_Start), _ |
| 53 | + | |
| 54 | - | Cells(Parts_coordinate(3).Row_End, Parts_coordinate(3).Column_End)).Select |
| 54 | + | |
| 55 | Next | |
| 56 | - | 'Сбор названий |
| 56 | + | |
| 57 | - | Range(Cells(Parts_coordinate(1).Row_Start - 2, Parts_coordinate(1).Column_Start), _ |
| 57 | + | For p = 1 To UBound(z, 2): all_consumers_expenses = all_consumers_expenses + z(1, p): Next |
| 58 | - | Cells(Parts_coordinate(1).Row_Start - 1, Parts_coordinate(1).Column_End)).Select |
| 58 | + | |
| 59 | For i = 1 To UBound(x, 1) - 1: intermediate_consumption_expenses = intermediate_consumption_expenses + x(i, j): Next | |
| 60 | - | |
| 60 | + | |
| 61 | - | Range(Cells(Parts_coordinate(1).Row_Start, Parts_coordinate(1).Column_Start - 1), _ |
| 61 | + | |
| 62 | gdp_3rd_method = all_consumers_expenses - intermediate_consumption_expenses + import | |
| 63 | ReDim production_expenses_matrix(1 To UBound(x, 1), 1 To UBound(x, 1)) | |
| 64 | ReDim base(1 To 1, 1 To UBound(x, 1)) | |
| 65 | - | |
| 65 | + | |
| 66 | - | Range(Cells(Parts_coordinate(2).Row_Start - 2, Parts_coordinate(2).Column_Start), _ |
| 66 | + | |
| 67 | ReDim final_consumption_matrix(1 To UBound(x, 1), 1 To UBound(y, 2) + 1) | |
| 68 | ReDim production_final_consumption(1 To UBound(x, 1) + 2, 1 To 4) | |
| 69 | - | |
| 69 | + | |
| 70 | - | 'Расчет ВВП тремя способами |
| 70 | + | |
| 71 | - | 'ВВП по расходам |
| 71 | + | |
| 72 | For k = 1 To UBound(y, 2) | |
| 73 | For i = 1 To UBound(y, 1) | |
| 74 | final_consumption_matrix(i, k) = y(i, k) / gdp_expenses | |
| 75 | - | 'ВВП по доходам |
| 75 | + | |
| 76 | Next i | |
| 77 | Next k | |
| 78 | base(1, UBound(x, 1)) = 1 | |
| 79 | - | '?? 'ВВП по методу: ВВП=совокупные затраты покупателей на покупку продуктов - промежуточное потребление + импорт |
| 79 | + | |
| 80 | - | ''Cовокупные затраты покупателей на покупку продуктов (Итого использовано в ценах покупателей) |
| 80 | + | |
| 81 | For i = 1 To UBound(x, 1): | |
| 82 | - | For p = 1 To UBound(z, 2): all_consumers_expenses = all_consumers_expenses + z(1, p): Next 'чистые налоги на продукты |
| 82 | + | |
| 83 | - | ''Расходы на промежуточное потребление |
| 83 | + | |
| 84 | production_expenses_matrix(i, UBound(x, 1)) = final_consumption_matrix(i, UBound(y, 2) + 1) | |
| 85 | Next i | |
| 86 | Next j | |
| 87 | - | ''Совокупный импорт |
| 87 | + | |
| 88 | production_final_consumption(1, 3) = "Экспорт" | |
| 89 | - | |
| 89 | + | |
| 90 | production_final_consumption(UBound(x, 1) + 2, 1) = "Всего" | |
| 91 | - | |
| 91 | + | |
| 92 | - | 'Расчет всех матриц затрат и потребления (Таб.2-Таб.4) |
| 92 | + | |
| 93 | production_final_consumption(i + 1, 2) = production_final_consumption(i + 1, 2) + final_consumption_matrix(i, k) | |
| 94 | - | ReDim base(1 To 1, 1 To UBound(x, 1)) 'Костыль в размерности, но лень переделывать print_data_massive |
| 94 | + | |
| 95 | production_final_consumption(i + 1, 1) = Resource_Names(i, 1) | |
| 96 | production_final_consumption(i + 1, 3) = final_consumption_matrix(i, UBound(y, 2) - 1) | |
| 97 | production_final_consumption(i + 1, 4) = final_consumption_matrix(i, UBound(y, 2)) | |
| 98 | production_final_consumption(UBound(x, 1) + 2, 2) = production_final_consumption(UBound(x, 1) + 2, 2) + production_final_consumption(i + 1, 2) | |
| 99 | - | 'Расчет чистого дохода |
| 99 | + | production_final_consumption(UBound(x, 1) + 2, 3) = production_final_consumption(UBound(x, 1) + 2, 3) + production_final_consumption(i + 1, 3) |
| 100 | production_final_consumption(UBound(x, 1) + 2, 4) = production_final_consumption(UBound(x, 1) + 2, 4) + production_final_consumption(i + 1, 4) | |
| 101 | Next i | |
| 102 | ThisWorkbook.Sheets("Нейман2").Activate
| |
| 103 | - | 'Расчет матрицы коэффициентов затрат на конечное потребление |
| 103 | + | |
| 104 | Cells(3, 3) = "Таб.1" | |
| 105 | Cells(3, 3).Select: Cell_Color | |
| 106 | - | 'Матрица коэффициентов затрат на конечное потребление по всем отраслям |
| 106 | + | |
| 107 | Cells(3, 5) = "Число потребителей" | |
| 108 | - | 'Вектор коэффициентов затрат на конечное потребление по "всего конечное потребление" |
| 108 | + | |
| 109 | Cells(4, 5) = 1 | |
| 110 | Cells(2, 8) = "Расходы на потребление ВВП1 =": Cells(2, 11) = gdp_expenses | |
| 111 | Cells(3, 8) = "Доходы населения ВВП2= ": Cells(3, 11) = gdp_income | |
| 112 | - | 'Расчет базы |
| 112 | + | |
| 113 | Cells(5, 8) = "Итого использовано в ценах покупателей": | |
| 114 | Cells(6, 8) = all_consumers_expenses | |
| 115 | - | 'Расчет матрицы коэффициентов затрат |
| 115 | + | |
| 116 | - | 'Из модели МОБ следует, что UBound(x,1)=UBound(y,1)! |
| 116 | + | |
| 117 | Cells(5, 10) = "Импорт" | |
| 118 | Cells(6, 10) = import | |
| 119 | - | 'Расчет матрицы по всем отраслям |
| 119 | + | |
| 120 | Cells(9, 2).Select: Cell_Color | |
| 121 | - | 'Расчет вектора "Денежные затраты" |
| 121 | + | |
| 122 | Cells(11, 2) = "Таб.2" | |
| 123 | - | 'Расчет вектора "Потребление" |
| 123 | + | |
| 124 | Call print_data_massive(10, 3, Process_Names) | |
| 125 | Cells(10, 3 + UBound(Process_Names, 2)) = "Потребление" | |
| 126 | Cells(11, 3 + UBound(Process_Names, 2)) = UBound(x, 1) | |
| 127 | - | 'Расчет конечного потребления продукции отраслей |
| 127 | + | |
| 128 | Call print_data_massive(12, 3, production_expenses_matrix): Number_Format_Three_decimal_places | |
| 129 | Cells(11, 30) = "Таб.3" | |
| 130 | Cells(11, 30).Select: Cell_Color | |
| 131 | Call print_data_massive(12, 31, final_consumption_matrix): Number_Format_Three_decimal_places | |
| 132 | Cells(10, 30 + UBound(final_consumption_matrix, 2)) = "Всего конечное потребление" | |
| 133 | - | 'Расчет внутреннего потребления |
| 133 | + | |
| 134 | Call print_data_massive(10, 31, Consumers_Names) | |
| 135 | Cells(10, 45) = "Табл. 4 Конечное потребление продукции отраслей (доли ВВП)" | |
| 136 | Cells(10, 45).Select: Cell_Color | |
| 137 | - | 'Присвоение названий отраслей из Resource_Names |
| 137 | + | |
| 138 | End Sub | |
| 139 | - | 'Копирование данных об экспорте из final_consumption_matrix |
| 139 | + | |
| 140 | Range(Cells(row, column), Cells(row + UBound(print_massive, 1) - LBound(print_massive, 1), _ | |
| 141 | - | 'Копирование данных об импорте из final_consumption_matrix |
| 141 | + | |
| 142 | Selection.Value = print_massive | |
| 143 | - | 'Расчет строки "Всего" |
| 143 | + | |
| 144 | - | production_final_consumption(UBound(x, 1) + 2, 2) = production_final_consumption(UBound(x, 1) + 2, 2) _ |
| 144 | + | |
| 145 | - | + production_final_consumption(i + 1, 2) |
| 145 | + | |
| 146 | - | production_final_consumption(UBound(x, 1) + 2, 3) = production_final_consumption(UBound(x, 1) + 2, 3) _ |
| 146 | + | |
| 147 | - | + production_final_consumption(i + 1, 3) |
| 147 | + | |
| 148 | - | production_final_consumption(UBound(x, 1) + 2, 4) = production_final_consumption(UBound(x, 1) + 2, 4) _ |
| 148 | + | |
| 149 | - | + production_final_consumption(i + 1, 4) |
| 149 | + | |
| 150 | ActiveWindow.LargeScroll Down:=-2 | |
| 151 | - | |
| 151 | + | |
| 152 | - | 'Вывод полученных расчетов на лист "Нейман" |
| 152 | + | |
| 153 | With Selection.Interior | |
| 154 | .ColorIndex = 8 | |
| 155 | - | 'Вывод "Таб.1" |
| 155 | + | |
| 156 | End Sub |