Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Option Explicit
- Type Parts_coordinate
- Row_Start As Integer
- Row_End As Integer
- Column_Start As Integer
- Column_End As Integer
- End Type
- Sub grow_control()
- Dim i, j, k, p As Integer 'Переменные, используемые в циклах, соответствующие обозначениям модели МОБ
- Dim Parts_coordinate(1 To 3) As Parts_coordinate 'Массив, содержащий координаты каждого из разделов
- Dim x As Variant '1ый раздел модели МОБ, где x(i,j) - сколько продуктов i-й отрасли надо затратить, чтобы обеспечить пр-во j-й отрасли
- Dim y As Variant '2ой раздел модели МОБ, где y(i,k) - сколько продукции i-й отрасли надо затратить, чтобы удовлетворить потребности в k-ом направлении
- Dim z As Variant '3ий раздел модели МОБ, где z(p,j) - первичное распледеление доходов от продаж по различным отраслям
- Dim Resource_Names, Process_Names, Consumers_Names As Variant 'Переменные, используемые для записи необходимых названий отраслей, потребителей и пр.
- Dim gdp_expenses As Double 'ВВП, рассчитанный по расходам на конечное потребление
- Dim gdp_income As Double 'ВВП, рассчитанный по доходам полученным от продаж продукции и ресурсов
- Dim gdp_3rd_method As Double 'ВВП по методу: ВВП=совокупные затраты покупателей на покупку продуктов - промежуточное потребление + импорт
- Dim all_consumers_expenses As Double 'Cовокупные затраты покупателей на покупку продуктов (Итого использовано в ценах покупателей)
- Dim intermediate_consumption_expenses As Double 'Расходы на промежуточное потребление
- Dim import As Double 'Совокупный импорт
- Dim production_expenses_matrix() As Double 'Матрица коэффициентов производственных затрат
- Dim production_final_consumption() As Variant 'Конечное потребление продукции отраслей
- Dim base() As Double 'База
- Dim net_income() As Double 'Чистые доходы
- Dim total_final_consumption() As Double 'Всего конечное потребление
- Dim final_consumption_matrix() As Variant 'Матрица коэффициентов затрат на конечное потребление
- ThisWorkbook.Sheets("рост").Activate
- 'Сбор координат разделов
- For i = 1 To 3
- With Parts_coordinate(i)
- .Row_Start = Cells(1 + i, 4)
- .Row_End = Cells(1 + i, 5)
- .Column_Start = Cells(1 + i, 6)
- .Column_End = Cells(1 + i, 7)
- End With
- Next i
- 'Сбор данных из соответствующих разделов
- 'Сбор численной информации
- Range(Cells(Parts_coordinate(1).Row_Start, Parts_coordinate(1).Column_Start), _
- Cells(Parts_coordinate(1).Row_End, Parts_coordinate(1).Column_End)).Select
- x = Selection.Value 'Ubound(x,1) != Ubound(x,2)
- Range(Cells(Parts_coordinate(2).Row_Start, Parts_coordinate(2).Column_Start), _
- Cells(Parts_coordinate(2).Row_End, Parts_coordinate(2).Column_End)).Select
- y = Selection.Value
- Range(Cells(Parts_coordinate(3).Row_Start, Parts_coordinate(3).Column_Start), _
- Cells(Parts_coordinate(3).Row_End, Parts_coordinate(3).Column_End)).Select
- z = Selection.Value
- 'Сбор названий
- 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
- Process_Names = Selection.Value
- Range(Cells(Parts_coordinate(1).Row_Start, Parts_coordinate(1).Column_Start - 1), _
- Cells(Parts_coordinate(1).Row_End, Parts_coordinate(1).Column_Start - 2)).Select
- Resource_Names = Selection.Value
- Resource_Names(UBound(Resource_Names, 1), 1) = "Денежные затраты"
- Range(Cells(Parts_coordinate(2).Row_Start - 2, Parts_coordinate(2).Column_Start), _
- Cells(Parts_coordinate(2).Row_Start - 1, Parts_coordinate(2).Column_End)).Select
- Consumers_Names = Selection.Value
- 'Расчет ВВП тремя способами
- 'ВВП по расходам
- For i = 1 To UBound(y, 1)
- For k = 1 To UBound(y, 2): gdp_expenses = gdp_expenses + y(i, k): Next
- Next
- 'ВВП по доходам
- For p = 1 To UBound(z, 1)
- For j = 1 To UBound(z, 2): gdp_income = gdp_income + z(p, j): Next
- Next
- '?? 'ВВП по методу: ВВП=совокупные затраты покупателей на покупку продуктов - промежуточное потребление + импорт
- ''Cовокупные затраты покупателей на покупку продуктов (Итого использовано в ценах покупателей)
- For j = 1 To UBound(x, 2): all_consumers_expenses = all_consumers_expenses + x(UBound(x, 1), j): Next
- For p = 1 To UBound(z, 2): all_consumers_expenses = all_consumers_expenses + z(1, p): Next 'чистые налоги на продукты
- ''Расходы на промежуточное потребление
- For j = 1 To UBound(x, 2)
- For i = 1 To UBound(x, 1) - 1: intermediate_consumption_expenses = intermediate_consumption_expenses + x(i, j): Next
- Next
- ''Совокупный импорт
- For i = 1 To UBound(y, 1): import = import + y(i, UBound(y, 2)): Next
- gdp_3rd_method = all_consumers_expenses - intermediate_consumption_expenses + import
- 'Расчет всех матриц затрат и потребления (Таб.2-Таб.4)
- ReDim production_expenses_matrix(1 To UBound(x, 1), 1 To UBound(x, 1))
- ReDim base(1 To 1, 1 To UBound(x, 1)) 'Костыль в размерности, но лень переделывать print_data_massive
- ReDim net_income(1 To UBound(z, 2))
- ReDim total_final_consumption(1 To UBound(x, 1))
- ReDim final_consumption_matrix(1 To UBound(x, 1), 1 To UBound(y, 2) + 1)
- ReDim production_final_consumption(1 To UBound(x, 1) + 2, 1 To 4)
- 'Расчет чистого дохода
- For j = 1 To UBound(x, 2)
- For p = 1 To UBound(z, 1): net_income(j) = net_income(j) + z(p, j): Next
- Next
- 'Расчет матрицы коэффициентов затрат на конечное потребление
- For k = 1 To UBound(y, 2)
- For i = 1 To UBound(y, 1)
- 'Матрица коэффициентов затрат на конечное потребление по всем отраслям
- final_consumption_matrix(i, k) = y(i, k) / gdp_expenses
- 'Вектор коэффициентов затрат на конечное потребление по "всего конечное потребление"
- final_consumption_matrix(i, UBound(y, 2) + 1) = final_consumption_matrix(i, UBound(y, 2) + 1) + final_consumption_matrix(i, k)
- Next i
- Next k
- 'Расчет базы
- base(1, UBound(x, 1)) = 1
- For i = 1 To UBound(x, 1) - 1: base(1, i) = x(UBound(x, 1), i) / gdp_expenses: Next
- 'Расчет матрицы коэффициентов затрат
- 'Из модели МОБ следует, что UBound(x,1)=UBound(y,1)!
- For j = 1 To UBound(x, 2)
- For i = 1 To UBound(x, 1):
- 'Расчет матрицы по всем отраслям
- production_expenses_matrix(i, j) = x(i, j) / x(UBound(x, 1), j)
- 'Расчет вектора "Денежные затраты"
- production_expenses_matrix(UBound(x, 1), j) = net_income(j) / x(UBound(x, 1), j)
- 'Расчет вектора "Потребление"
- production_expenses_matrix(i, UBound(x, 1)) = final_consumption_matrix(i, UBound(y, 2) + 1)
- Next i
- Next j
- 'Расчет конечного потребления продукции отраслей
- production_final_consumption(1, 2) = "Внутреннее потребление"
- production_final_consumption(1, 3) = "Экспорт"
- production_final_consumption(1, 4) = "Импорт"
- production_final_consumption(UBound(x, 1) + 2, 1) = "Всего"
- For i = 1 To UBound(x, 1)
- 'Расчет внутреннего потребления
- For k = 1 To UBound(y, 2) - 2
- production_final_consumption(i + 1, 2) = production_final_consumption(i + 1, 2) + final_consumption_matrix(i, k)
- Next k
- 'Присвоение названий отраслей из Resource_Names
- production_final_consumption(i + 1, 1) = Resource_Names(i, 1)
- 'Копирование данных об экспорте из final_consumption_matrix
- production_final_consumption(i + 1, 3) = final_consumption_matrix(i, UBound(y, 2) - 1)
- 'Копирование данных об импорте из final_consumption_matrix
- production_final_consumption(i + 1, 4) = final_consumption_matrix(i, UBound(y, 2))
- 'Расчет строки "Всего"
- production_final_consumption(UBound(x, 1) + 2, 2) = production_final_consumption(UBound(x, 1) + 2, 2) _
- + production_final_consumption(i + 1, 2)
- production_final_consumption(UBound(x, 1) + 2, 3) = production_final_consumption(UBound(x, 1) + 2, 3) _
- + production_final_consumption(i + 1, 3)
- production_final_consumption(UBound(x, 1) + 2, 4) = production_final_consumption(UBound(x, 1) + 2, 4) _
- + production_final_consumption(i + 1, 4)
- Next i
- 'Вывод полученных расчетов на лист "Нейман"
- ThisWorkbook.Sheets("Нейман2").Activate
- Cells.Clear
- 'Вывод "Таб.1"
- Cells(3, 3) = "Таб.1"
- Cells(3, 3).Select: Cell_Color
- Cells(3, 4) = "Число отраслей"
- Cells(3, 5) = "Число потребителей"
- Cells(4, 4) = UBound(x, 1) - 1
- Cells(4, 5) = 1
- Cells(2, 8) = "Расходы на потребление ВВП1 =": Cells(2, 11) = gdp_expenses
- Cells(3, 8) = "Доходы населения ВВП2= ": Cells(3, 11) = gdp_income
- Cells(4, 8) = "ВВП3=": Cells(4, 11) = gdp_3rd_method
- Cells(5, 8) = "Итого использовано в ценах покупателей":
- Cells(6, 8) = all_consumers_expenses
- Cells(5, 9) = "Производственное потребление"
- Cells(6, 9) = intermediate_consumption_expenses
- Cells(5, 10) = "Импорт"
- Cells(6, 10) = import
- 'Вывод "База"
- Cells(9, 2) = "База"
- Cells(9, 2).Select: Cell_Color
- Call print_data_massive(9, 3, base): Number_Format_Three_decimal_places
- 'Вывод "Таб.2"
- Cells(11, 2) = "Таб.2"
- Cells(11, 2).Select: Cell_Color
- Call print_data_massive(10, 3, Process_Names)
- Cells(10, 3 + UBound(Process_Names, 2)) = "Потребление"
- Cells(11, 3 + UBound(Process_Names, 2)) = UBound(x, 1)
- Call print_data_massive(12, 1, Resource_Names)
- Call print_data_massive(12, 3, production_expenses_matrix): Number_Format_Three_decimal_places
- 'Вывод "Таб.3"
- Cells(11, 30) = "Таб.3"
- Cells(11, 30).Select: Cell_Color
- Call print_data_massive(12, 31, final_consumption_matrix): Number_Format_Three_decimal_places
- Cells(10, 30 + UBound(final_consumption_matrix, 2)) = "Всего конечное потребление"
- Call print_data_massive(12, 29, Resource_Names)
- Call print_data_massive(10, 31, Consumers_Names)
- 'Вывод "Таб.4"
- Cells(10, 45) = "Табл. 4 Конечное потребление продукции отраслей (доли ВВП)"
- Cells(10, 45).Select: Cell_Color
- Call print_data_massive(11, 45, production_final_consumption): Number_Format_Four_decimal_places
- End Sub
- Sub print_data_massive(row As Integer, column As Integer, print_massive As Variant)
- 'Функция для вывода массива данных на лист
- '(row,column) - начальные координаты (левый верхний угол) массива
- 'print_massive - массив, которые необходимо вывести на лист
- Range(Cells(row, column), Cells(row + UBound(print_massive, 1) - LBound(print_massive, 1), _
- column + UBound(print_massive, 2) - LBound(print_massive, 1))).Select
- Selection.Value = print_massive
- End Sub
- Sub Number_Format_Three_decimal_places()
- Selection.NumberFormat = "0.000"
- ActiveWindow.LargeScroll Down:=-2
- End Sub
- Sub Number_Format_Four_decimal_places()
- Selection.NumberFormat = "0.0000"
- ActiveWindow.LargeScroll Down:=-2
- End Sub
- Sub Cell_Color()
- With Selection.Interior
- .ColorIndex = 8
- End With
- End Sub
Advertisement
Add Comment
Please, Sign In to add comment