Анализ и прогнозирование развития российского рынка газа
Газовая отрасль, ее значение в экономическом и социальном развитии общества в России. Создание организованных рынков, развитие биржевой торговли газом; инвестиционные процессы, повышение их эффективности с помощью экономико-математического моделирования.
Рубрика | Экономика и экономическая теория |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 07.03.2011 |
Размер файла | 5,1 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Неразвитая рыночная инфраструктура на российском рынке газа обусловлена отсутствием необходимых финансово-экономических условий для развития полноценного конкурентного рынка.
Под воздействием негативных факторов, действующих в российской газовой отрасли, наметилась весьма опасная тенденция формирования дефицита на внутреннем рынка газа, в то время как страна обладает крупными его запасами.
Формирование рынка газа позволит решить следующие задачи:
· ликвидация диспропорций развития газового рынка, сдерживающих производственное развитие газовых компаний, снятие административных ограничений и расширение сферы применения рыночных механизмов;
· формирование оптимальной структуры топливно-энергетического баланса страны, рациональное использование газа и стимулирование газосбережения во всех сферах экономики;
· создание благоприятных условий для освоения новых месторождений, строительства и эксплуатации новых мощностей по транспорту, хранению и распределению газа, стимулирование новых производителей газа;
· повышение открытости торговли, создание торговых площадок и определение принципов взаимодействия с субъектами рыночной инфраструктуры. Повышение открытости информации, характеризующей спрос и предложение на рынке. Развитие долгосрочных отношений и инструментов срочного рынка;
· поэтапная ликвидация перекрестного субсидирования в газовой отрасли и совершенствования системы поддержки малообеспеченных слоев населения.
Важнейшим условием развития рынка газа в России является отказ от практики государственного регулирования оптовых цен на газ и поэтапный переход к государственному регулированию тарифов в сфере ественной монополии на транспортировку газа.
Обязательным условием формирования и развития рынка газа является платежеспособный спрос. Государство и частный капитал должны сотрудничать в установлении нового механизма государственного регулирования и мониторинга ситуации на газовом рынке, в том числе обеспечить:
· необходимые для покрытия спроса мощности по добыче, переработке, транспортировке и хранению газа, в том числе для выполнения международных соглашений и долгосрочных контрактов по экспорту газа;
· установление цен на газ с учетом эффективности его использования, а в ближайшие три года как минимум на уровне обеспечения самофинансирования газовой отрасли;
· создание стимулирующих условий для роста добычи газа, в том числе для независимых производителей;
· государственную поддержку развития мощностей и рынка услуг по транспортировке и хранению газа участниками рынка;
· контроль за обеспечением недискриминационного доступа независимых организаций к свободным транспортным мощностям и упрощение процедуры его оформления;
· введение дифференцированных налоговых платежей, способствующих эффективной эксплуатации месторождений газа с падающей добычей.
3. В третьей части дипломной работы предложен методический подход к решению задач планирования и оптимизации инвестиций в нефтегазовой отрасли. В основе подхода лежит метод оптимизации инвестиций, использующий идею построения функции Беллмана и учитывающий специфику задачи.
На основе разработанного метода оптимизации инвестиций получены алгоритм и его компьютерная реализация на языке Visual Basic for Application, находящие глобальный оптимум целевой функции и учитывающие специфику возможных вариантов инвестиций в добычу нефтегазового конденсата. Рассчитаны оптимальные варианты распределения инвестиций по месторождениям, обеспечивающие максимальные суммарные объемы добычи нефтегазового конденсата на каждом возможном уровне инвестиций. На основе такого типа результатов руководство компании может просчитывать одновременно несколько стратегий инвестирования и, в зависимости от рыночной конъюнктуры и наличия финансовых ресурсов, принимать оптимальное решение. Подтверждена применимость метода приведенными расчетами максимальных значений добычи при заданных уровнях инвестирования для ДАО Пурнефтегаз.
СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ:
1. Баранов В.Н. «Независимые производители и перспективы развития газовой отрасли России».
2. Сборник докладов и выступлений « Развитие российского рынка газа: ценообразование и перспективы биржевой торговли»
3. Язев В. «Природный газ».
4. Ермолов О.В., Миловидов К.Н., Чугунов Л.C., Ремизов Л.С. «Стратегия развития нефтегазовых компаний» 1998 г
5. www.gasforum.ru
6. Авдокуши Е.Ф. «Международные экономические отношения» 1999 г.
7. Киреев А. «Международная экономика: движение товара и факторы производства» Часть первая 2000 г.
8. Журнал «Газовый бизнес» январь-феврель 2006г.
9. Офицеров вл., Судзиловский Н.Б. Об одном типе задач линейного программирования и их решении // Известия АН СССР. Техническая кибернетика. - 1981. - N2 6. - С. 14-17.
10. Офицеров вл., Смирнов с.в. Моделирование и оптимизация снабженческой деятельности для крупных компаний // Проблемы управления и моделирования в сложных системах: Труды V международной конф. (Самара, июнь 2003). - Самара: Самарский НЦ РАН, 2003. - С. 197-205.
11. Беллман Р., Дрейфус С. Прикладные задачи динамического программирования. - М.: Наука, 1965. - С. 98.
ПРИЛОЖЕНИЕ
Листинг программы для оптимизация инвестиций в месторождения на языке программирования VBA
Option Explicit ' Все переменные должны описываться
Option Base 1 'Индексы всех массивов начинаются с 1
Туре Mestorozhdenie :Далее будет определен массив этого типа
Name As String 'Имя месторождения
KolVart As lnteger 'Колич вариантов инвестирования
Lnv() As DoubIe 'Будет определен массив вариантов вложений
Dob() As ОоиЫе 'Будет определен массив объемов добычи
End Туре
Туре АО 'Далее будет определен массив этого типа
NameDAO As String 'Имя ДАО
KolMestor As Integer 'Количество MecTopo)jCД в ДАО
MestorO As Mestorozhdenie 'Будег определен массив месторожд ДАО
End Туре
Туре DAO_dob 'Далее будет определен массив этого типа
Name As String 'Имя ДАО
Invest As ОоиЫе 'Инвестиции в ДАО
Dob As ОоиЫе 'Добыча ДАО
End Туре
Туре Maxl
FMAX As ОоиЫе 'Значение функционалана ресурсу, размер массива = числу эффективных вариантов ресурса FNameDAO As String 'Имя ДАО
FNameMestor As String 'Имя месторождения
Flnv As ОоиЫе 'Будет определено вложение средств
FDob As ОоиЫе 'Будет определен объем соответствующей добычи
F _i_INV As Long 'Будет определен индекс инвестирования
End Туре
Туре Мах2
FMAX As ОоиЫе Значение функционалана ресурсе, размер массива = числу эффективных вариантов ресурса FNameDAO As String 'Имя ДАО
NmMestor As String Имя месторождения, дающего последнее приращение
FNameMestorO As String 'Имя месторождения
Flnv As DoubIe 'Будет определено вложение средств
FDob As ОоиЫе 'Будет определен объем соответствующей добычи
F _UNV As Long 'Будет определен индекс инвестирования
End Туре
Описание глобальных переменных, видимых во всех процедурах модуля
Dim DataВook As String 'Переменная для запоминария имени книги с данными
Dim ProgramBook As String 'Переменная для запоминария имени книги
Dim ResultBook As String 'Переменная для запоминария имени книги с результатами
Dim Row, Column As Integer 'Переменные для сохранения текущего номера ячейки
Dim Sredstva As ОоиЫе 'Общие максимальные средства на добычу
Dim Delta As ОоиЫе 'Интервал приращения средств
Dim PumeftSheet As String 'Переменная для имени листа Пурнефтегаз
Dim SahalinmorSheet As String 'Переменная для имени листа Сахалинморнефтегаз
Dim KrasnodarSheet As String 'Переменная для имени листа Краснодарнефтегаз
Dim StavropSheet As String 'Переменная для листа Ставропольнефтегаз
Dim DagneftSheet As String 'Переменная для ли:;та Дагнефтегаз
Dim TermneftSheet As String 'Переменная для листа Термнефтегаз
Dim GrozneftSheet As String 'Переменная для листа Грознефтегаз
Dim N_DAO As Integer 'Число ДАО
Dim ОАОО As АО 'Определили динамич массив структур ДАО, месторождений, вариантов инв
Sub General() 'Управляющая процедура
Dim FМAXlO As Maxl 'Определили структуру соотв. найденному макс Фун*,ла для одной перем. Dim FMAX20 As ОоиЫе 'Определили рабочее соотв. найденному макс функ-ла .
Dim FMAX30 As Maxl
Dim FMAX40 As Мах2 'Определили соотв. найденному макс функ-ла .
Dim Tst_MAX, Tst_MIN As ОоиЫе 'Переменые для тестирования максимума и минимума
Dim i_DAO, ii_DAO, i_Mestor, ii_Mestor, i_tstMestor, i_ Vart, ii_ Vart, i, fflag, fflagl As Integer 'Индексы для просмотра
Dim N_INV, M_INV As Long 'Максимальное число приращений (для всех в сумме и для одного максимального)
Dim S_INV As Long 'Минимальное значение инвестирования (в вариаmах)
Dim N_Fact_INV, ii_Fact_INV, i_Fact_INV As Long 'Фактическое число вариантов инвестирования
Dim i_INV, nn_Fact_INV, ii_INV As Long 'значение текущею номера вариаmа инвестирования Dim j_in_i1NV As Long 'З,начение текущего номера варианта инвестирования в рамках i
Dim V _i_INV As Double 'Значение текущего варианта инвестирования
Dim V j_in_iINV As Double 'значение текущего варианта инвестирования
Dim N_Mestor As Integer 'Число месторождений (текущее рабочее опред:ление)
Dim Flg As Integer 'флаг для определиния было ли изменене максимума
Dim Мах_Мах As Double 'абсолютный максимум
DataBook = ""
ProgramВook = ''''
ResultBook = ""
'Начало работы, процедура открытия файла с исходными данными
'1)
Сall OpenDataFile
'Определяем отказ от работы
If DataBook = "" Then
Exit Sub
End If
Выдаем информацию в строке состояния
Application,StatusBar = "Создаются массивы с данными"
Вводим исходные данные
Саll GetData
Определяем максимальный объем инвестирования
Sredstva = О
Tst_MIN = 999999999999#
Мах_Мах = О 'сейчас для поиска максимального варианта инвестирования
Fоr i_DAO = 1 То N_DAO
Fоr i_Mestor = 1 То DАО(i_DАо).коlМеstог
Выбор максимального варианта инвестирования среди текущих вариamов
Tst_MAX=O
Рот i_ Vart = 1 То DAO(i_DAO),Mestor(i_Mestor).KoIVart
IfTst_MAX < DAO(i_DAO).Mestor(i_Mestor).Inv(i_ Vart) Then
Tst_MAX = DAO(i_DAO).Mestor(i_Mestor).Inv(i_ Vart) End If
'Выбор максимального варианта инвестирования среди всех
IfMax_Max < DAO(i_DAO).Mestor(i_Mestor).Inv(i_ Vart) Then
Мах_Мах = DAO(i_DAO).Mestor(i_Mestor).Inv(i_ Vart) End If
'Выбор нач. знач для инвестирования
IfTst_MIN > DAO(i_DAO).Mestor(i_Mestor).Inv(i_ Vart) Then
Tst_MIN = DАО(i_DАО).Меstш(i_Меstог).Iпv(i_ Vart)
End If
Next i_ Vart
Sredstva = Sredstva + Tst_MAX Next i_Mestor
Nexti_DAO
'Начальное значение инвестирования V _i_INV = Tst_MIN
Tst_ MIN = 99999999999999#
'Выбор вариаmа DEL ТА для полного оптимума
Fог i_DAO = 1 То N_DAO
Fог i_Mestor = 1 То DAO(i_DAO).KoIMestor
Fот i_ Vart = 1 То DАО(i_DАО).Меstог(i_Меstог).коIVагt Рот ii_DAO = i_DAO То N_DAO
Fот ii_Mestor = 1 То DAO(ii_DAO).KoIMestor
Рот ii_ Vart = 1 То DАО(ii_DАО).Меstог(ii_Меstог).коIVагt
'Выбор варианта приращения инвестирования
If Abs(DAO(i_DAO).Mestor(i_Mestor).Inv(i_ Vart) - DAO(ii_DAO).Mestor(ii_Mestor).Inv(ii_ Vart» <> О Then
IfTst_MIN>Abs(DAO(i_DAO).Mestor(i_Mestor).Inv(i_Vart)DAO(ii_DAO.Mestor(ii_Mestor).Inv(ii_ Vart» Then
Tst_MIN = Abs(DAO(i_DAO).Mestor(i_Mestor).Inv(i_Vart)-DAO(ii_DAO).Mestor(ii_Mestor).Inv(ii_ Vart»
End If
End If
Next ii_ Vart
Next ii_Mestor
Nextii DAO
Next i_ Vart
Next i_Mestor
Nexti_DAO
**************************************************
Заполнение для 'всевозможных вариантов инвестирования
Вычисление общего числа месторождений
N _ Mestor = О 'нач знач общего числа местор.
For i_DAO = 1 То N_DAO
N_Mestor = N_Mestor + DAO(i_DAO).KoIMestor
Next i_DAO
Delta = Tst_MIN
Flg=O
M_INV = Iпt(Мах_Мах / Delta) + 1 'Число приращений для максимального варианта
Tst_ МАХ = О 'нач знач про верки на максимум
Выдаем иформацию в строкеl состояния
Application.StatusBar = "Идет процесс оптимизации"
Определение начальных и конечных индексов в вариантах инвестирования
N_Fact_INV = О 'Начальное число вариантов инвестирования
N_INV = Int(Sredstva / Delta) + 1
S_INV = Int(Tst_MIN / Delta)
IfS_INV = О Then
S_INV = 1
End If
М _ INV = Int(Max _Мах / Delta) + 1 'Число приращений для максимального варианта
For i_INV = S_INV То M_1NV
Текущий объем инвестирования
V _i_INV = Delta * i_INV
For i_DAO = 1 То N_DAO
For i_Mestor = 1 То DАО(i_DАо).коlМеstог
For i_ Vart = 1 То DАО(i_DАО).Меstоr(i_Меstог).коlVагt
Проверка хватает ли текущего объема инвестирования для добычи
IfV _i_INV >= DAO(i_DAO).Mestor(i_Mestor).Inv(i_ Vart) Then
Проверка включения данных по месторождению
fflag = О
For i = 1 То N]act_INV
IfDAO(i_DAO).Mestor(i_Mestor).Name = FMAX1(i).FNameMestor_
And DAO(i_DAO).Mestor(i_Mestor).Inv(i_ Vart) = _
FMAX1(i).FInv Then
месторождение уже записано
fflag = 1
Exit For
End If
Next i
If fflag = О Then 'записываем в порядке увеличения объемов инвестирования
N_Fact_INV = N_Fact_INV + 1 'Число вариантов инвестиций в для одного месторож
ReDim Preserve FMAX1(N]act_INV)
FMAX1(N]act_INV).FMAX = DAO(i_DAO).Mestor(i_Mestor).Dob(i_ Vart)
FMAXl (N_Fact_INV).F _i_INV = i_INV
FMAX1(N]act_INV).FDob = DAO(i_DAO).Mestor(i_Mestor).Dob(i_ Vart) FMAXl(N]act_INV).Flnv = DAO(i_DAO).Mestor(i_Mestor).Inv(i_ Vart) FMAXl(N]act_INV).FNameDAO = DAO(i_DAO).NameDAO
FMAXl (N ]act_ INV).FNameMestor = DAO(i_ DAO).Mestor(i_ Mestor).Name End If
End lf
Next i_Vart
Next i_Mestor
Nexti_DAO
Next i_INV
********************************************************
Flg=O
ReDim FMAX2(N_INV - S_INV)
Поиск оптимального решения
Tst_MAX = О 'нач знач про верки на максимум
ReDim FMAX4(!)
ReDim FMAX4(! ).FNameMestor(N _ Mestor)
Мах_Мах=О nn]act_INV = О
Проход по вариантам финансирования одновременно i_Mestor месторождений
For i_INV = S_INV То N_INV
значение текущего номера варианта инвестирования в рамках общего инвестир i_INV
For j_injINV = S_INV То i_INV
Находим FМAX соответствущий текущеI.jY инвестированию j_in_iINV
Ifj_in_iINV <> UNV Then 'Условие обязательно, если (lIВНЫ, то FMAX2(O)!!!
For i_Fact_INV = 1 То N_Fact_INV
Ifj_in_iINV = FMAX1(i]act_INV).F_i_INV Тhеп
Tst_MAX = FMAX1(i]act_INV).FMAX + FMAX2(i_INV - j_in_iINV)
ExitFor
End If
Next i]act_INV
Else 'если равны,то
For i]act_INV = 1 То N]act_INV
Ifj_in_iINV = FMAXl (i]act_INV).F _i_INV Тhen
Tst_MAX = FMAX1(i]act_INV).FMAX
Exit For
End If
Next i Fact INV
End If
IfTst_MAX> Мах_Мах + 0.00001 Тhen
Flg = 1 'предполагаем, что месторождение еще не используется в финансировании
Проверка на участие месторождения в двух финансированиях одновременно
Ifj_injINV <> i_INV Тhеп
For i_tstMestor = 1 То nn_Fact_INV
Находим предыдущий индекс объема дающий текущий максимум
IfFMAX4(i_tstMestor).F _i_INV = i_INV - FMAXl(i]act_INV).F _i_INV Тhеп
'Проверяем на совпадение имен среди имен предыдущего индекса
For i_ Vart = 1 То UBoиnd(FMAX4(i_tstМestor).FNameMestor)
IfFMAX4(i_tstMestor).FNameMestor(i_ Vart) = FMAX1(i]act_INV).FNameMestor Тhеп
Попытка улучшить общий результат заменой "старого" варианта
инвестирования в месторождение с этим именем, новым вариантом
If Tst_MAX - FMAX4(i_ Vart).FDob <= Мах_Мах + 0.0001 Тhеп
Flg = О 'месторождение уже используется в финансировании
Tst_MAX = Мах_Мах
fflagl = О
ExitFor
Else 'Попытка замены варианта инвест. в месторождение на этом объеме общих инвестиций Tst_MAX = TsCMAX - FMAX4(i_ Vart).FDob
fflag = i_ Vart
fflagl = 2
Exit For
End If
End If Next i_ Vart End If
lfFJg = О Ог fflagI = 2 Тhen
Exit For
End If
Next i_tstМestor
End If
End If
запись нового результата для данного объема финансирования
IfFlg = 1 Тhen
Flg=O
nn_Fact_INV = nn_Fact_INV + 1
Записываем используемые ранее имена при получении макс на этом объеме
ReDim Preserve FMAX4(nn]act_INV)
ReDim Preseгve FMAX4(nn _Fact_INV).FNameMestor(nn _Fact_ INV) FMAX4(nn]act_INV).FMAX = Tst_MAX
FMAX4(nn]act_INV).FDob = FMAXl(i_Fact_INV).FDob
FMAX4(nn ]act_ INV).Flnv = FMAXl (i]act_ INV).Flnv
FMAX4(nn]act_INV).NmМestor = FMAXl (i]act_INV).FNameMestor
FMAX4(nn_Fact_INV).F _i_INV = i_INV 'Обшие объемы вложения FMAX4(nn_Fact_INV).FNameDAO = FMAX1(i_Fact_INV).FNameDAO
FMAX4(nn ]act_ INV).FNameMestor(nn ]act_ INV) = FMAXl (i_Fact_ INV).FNameMestor
Ifj_in_iINV <> i_INV Тhen
For ii_INV = 1 То nn]act_INV
IfFMAX4(ii_INV).F _i_INV = i_INV - FMAXl(i]act_INV).F _i_INV Тhen
For i_ Vart = 1 То UBound(FMAX4(ii_INV).FNameMestor) FMAX4(nn]act_INV).FNameMestor(i_ Vart) = FMAX4(ii_INV).FNameMestor(i_ Vart)
If fflagl = 2 Then 'Исключаем двойное инвестирование в месторождение, давшее максимум IfFMAX4(ii_INV).FNameMestor(i_ Vart) = FMAXl(i]act_INV).FNameMestor Тhеп FMAX4(nn_Fact_INV).FNameMestor(fflag) = ""
fflagl = О
End If
End If
Next i Vart
End If
Nextii_INV
FMAX4(nn ]act_INV).FNameMestor(nn]act_ INV) = FMAX] (i]act_ INV).FNameMestor
End If
Мах_Мах = Tst_MAX
FMAX2(i_INV) = Мах_Мах
Flg=O
End If
Next j_in _iINV
Nexti_INV
Обработка результатов
Dim OиtRezO As Мах2
Выдача результатов
SubResи1t_oиt(FMAX]О, FMAX40)
End Sиb
Sиb Resиlt_oиt(FМAXIO As Мах], FMAX40 As Мах2)
Dim Sheet As Worksheet 'Переменная для текущих листов
Dim ListNameO As String
Dim arrayindex, nSheets, Add_n_Sheet, OиtSheet As Integer
Для каждой новой номенклатуры создается свой лист результатов
Начальные значения
arrayindex = ] 'Определяет номер имени в массиве имен
nSheets = О
Add_n_Sheet = О
OutSheet = 3 'Необходимое число листов
ReDim ListName(OutSheet)
ListName(l) = "Оптимизация добычи нефти"
ListName(2) = "Для заметок 1"
ListNamе(З) = "Для заметок 2"
ListName(4) = "Максимизация"
Формирование имени книги результатов
ResиltBook = Time &" "& Date &" "&" Результаты оптимизации "
Выдаем иформацшо в строке состояния
Application.StatusBar = "Создаю книry результатов: "& ResultВook
Создаем новую книry
Запрещаем переход на новое окно
Application.ScreenUpdating = False
Workbooks.Add
Вписываем данные в свойства файла
With ActiveWorkbook
Title = ResиltBook
Sиbject = "Оптимизация добычи нефти"
End With
Замена двоеточий и точек в дате на подчеркивания
ResиltВook = Replace(ResиltВook, ":", "_")
ResиltBook = Rep]ace(Resи1tBook, ".", "_")
Сохранение файла для изменения имени в текущем каталоге
ActiveWorkbook.SaveAs (ResиltBook)
Число листов в открытой книге
nSheets = 3
Добавляем листы
Add_n_Sheet = OиtSheet - nSheets
If Add_n_Sheet > О Тhеп
Worksheets.Add Coиnt:=Add_n_Sheet
End If
Переименовываем листы
For Eacl1 Sheet In ActiveWorkbook. Worksheets
If IПStr(l, Sheet.Name, "Лист") Тhеп
Sheet.Name = ListName(arrayindex) arrayindex = arrayindex + 1
End If
Next Sheet
Разрешаем обновление экрана
Application.ScreenUpdating = Тгие
Запоминаем имя созданной книги результатов
Resu1tBook = ActiveWorkbook.Name 'Активизируем книгу с программой
Тhis Workbook.Activate
Выдаем результаты по листам
For Each Sheet In ActiveWorkbook.Worksheets Select Case Sheet.Name
Case ListName(l) Sheet.Activate СаН Text1lnput
СаН Tabll_Write(FMAX10, FMAX40)
'Case ListName(2)
'Sheet.Activate
'Сall Text2Input
'СаН Tabl2 _ Write(Optimum_ Sk1adO, Optimum ]otrebitel())
'Case ListName(4)
'Sheet.Activate 'СаН Text4Input
'СаН Tabl4_ Write(Optimum]owerFactoгyO)
'ase ListNаmе(З)
'Sheet.Activate
'СаН ТехtЗlnрut
End Select
Next Sheet
ActiveWorkbook.Save 'Сохранение рабочей книги
'ActiveWorkbook.Close 'Закрытие книги
'Wогkshееts(ListNаmе(З )).Activate
'Очищаем StatusBar
Application.StatusBar = False
End Sub
Sub Text1Input()
Dim s, sl As String
Dim Flag As Integer
s= A1"
sl = "L1"
Range(s, sl).Select
With Selection
.HorizontalAlignment = xlCenter
.VeгticalAlignment = xlCenter
.WrapText = False
.Orientation = О
.Addlndent = False
.ShrinkToFit = True
.MergeCeHs = True
End With
With ActiveWorkbook.ActiveSheet
.Range(s, s 1 ).Font.Size = 16
.Range(s, sl).Font.Bold = True
.Range(s, sl).Font.Name = "Times New Roman"
End With
s= "А2"
sl = "L2"
Range(s, s 1 ).SeIect
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = О
.Addlndent = False
.shrinkToFit = True
End With
With ActiveWorkbook.ActiveSheet
.Range(s, sl).Font.Size = 12
.Range(s, s 1 ).Fопt.воld = True
.Range(s, sl).Font.Name = "Times New Roman"
End With
Range("Al :Gl ").Select
ActiveCell.FormulaRICl = "Результаты оптмизации "
Range(" А2:А2 ").Select
ActiveCell.FormulaRICl = "Вложения"
Range("A2").Se1ect
Columns(" A:A").EntireColumn .AutoFit
Range("B2:B2").Select
ActiveCell.FormulaRICl = "МАХ добычи"
Range("B2").Select
Columns("B:B ").Entil'eColumn.AutoFi t
Range("C2 :С2 "). Select
ActiveCell.FormulaRICl = "Затраты на единицу"
Range("C2").Select
Columns("C :C").EntireColumn .AutoFi t
Range("D2:D2").Select ActiveCell.FormulaRICl = "Месторождения"
Range("D2").Select Columns("D:D").EntireColumn.AutoFit
Range("E2:E2").Select ActiveCell.FormulaRl Сl = "Инвестиции"
Range("E2").Select Columns("E:E").EntireColumn.AutoFit
Range("F2 :F2 ").Select ActiveCell.FormulaRlCl = "Добыча"
Range("F2").Select
Со lumns("F: F").EntireColumn .AutoFit
Range("G2:G2").Select
ActiveCell.FormulaRlCl = "Затраты на единицу"
Range("G2").Select
Columns("G:G").EntireCo lиmп .AutoFit
Rапgе("Н2:Н2 "). Select
ActiveCell.FormulaRICl =" ДАО
Rапgе("Н2 ").Select
Columns("H:H").EntireColumn.AutoFi t
Range("12: 12"). Select
ActiveCell.FormulaRICl =" ДАО
Range("I2").Select
Columns("I:I").EntireColumn.AutoFit
Range("J2:J2"). Select ActiveCell.FormulaRICl = "Инвестиции"
Range("J2").Select
Columns(" J :J").EntireColumn .AutoFit
Rапgе("К2:К2 "). Select
ActiveCell.FormulaRICl = "Добыча"
Rапgе("К2"),Sеlесt Columns("K:K").EntireColumn .AutoFi t
Range("L2: L2 ").Select
ActiveCell.FormulaRlCl = "Затраты на единицу"
Range("L2").Select Columns("L:L").EntireColumn.AutoFit
End Sub
Sub Tabll_ Write(FMAXI0 As Махl, FMAX40 As Мах2)
Dim i, ii,j,jj, Flag As Integer
Dim RowIndex, Strlndex, Columnlndex As Integer Dim Sredstva As Double
Dim DAOI0 As DAO_dob Dim DA020 As DAO_dob
RowIndex = 2
Рог i = LBound(FMAX4) То UBound(FMAX4)
. = 1 'Нач. знач. количества имен ДАО
ReDim DAOl(jj)
ReDim DA02(jj)
Sredstva = о 'Начальное значение фактического финансирования
Columnlndex = 1 'Выход на начало новой старки
Rowlndex = Rowlndex + 1 'Переход на следующую строку
Strlndex = Rowlndex 'Индекс строки вывода группы данных по варианту инвестирования
'Cel1s(RowIndex, Coltlmnlndex).Value = _
, FMAX4(i).F _UNV * 100 'Вывод примерного объема инвестирования
Columnlndex = ColUlrnlndex + 1 'Переход на следущий столбецв строке
Cel1s(Rowlndex, Coltlmnlndex).Value = _
FMAX4(i).FMAX 'Вывод максимальной добычи
Columnlndex = СоlUПl1lпdех + 1 'Переход на следущий столбец в строке
'Выдача всех месторождений и ДАО соответствующих данному mтимальному варианту
For j = LBound(FMAX4(i).FNameMestor) То UBound(FMAX4(i).FNameMestor)
lfFMAX4(i).FNameMestor(j) <> ""
Тhеп Columnlndex = Columnlndex + 1 '
Cel1s(Rowlndex, ColumnIndex).Value = FMAX4(j).NmМestor 'имя месторождения
Columnlndex = Columnlndex + l' Переход на следущий столбец в строке
Cells(Rowlndex, ColumnIndex).Value = FMAX4(j).Flnv 'фактическое финансирование месторождения
Sredstva = Sredstva + FМAX4(j).Flnv 'фактический объем финансирования
Columnlndex = Columnlndex + l' Переход на следущий столбец в строке
Cells(Rowlndex, ColumnIndex).Value = FMAX4(j).FDob 'добыча на месторождении
Columnlndex = Columnlndex + l' Стоимость на единицу добычи
Cells(RowIndex, Columnlndex).Value = FMAX4(j).FInv / FMAX4(j).FDob
Columnlndex = Columnlndex + l' Переход на следущий столбец в строке
Cells(Rowlndex, ColumnIndex).Value = FMAX4(j).FNameDAO 'имя DAO входящего в оптимальные
Ifjj = 1 Тhеп
DA01(jj).Name = FMAX4(j).FNameDAO
DAO 1 (jj).Invest = FMAX4(j).Flnv
DAOl(jj).Dob = FMAX4(j).FDob
End If
Flag= О
Ifjj> 1 Тhеп
Flag= 1
For ii = 1 То jj - 1
IfDAOl(ii).Name = FMAX4(j).FNameDAO Then
DAO 1 (ii).Invest = DAO 1 (ii).Invest + FMAX4(j).FInv
DAO1 (ii).Dob = DAOl(ii).Dob + FMAX4(j).FDob
Flag =0
End If
Next ii
End If
IfFlag = 1 Тhеп
ReDim DA02(jj)
For ii = 1 То jj - 1
DA02(ii) = DAOl(ii)
Next ii
ReDim DAOl(jj)
For ii = 1 То jj - 1
DAOl (ii) = DA02(ii)
Nextii
DAOl(jj).Name = FMAX4(j).FNameDAO
DAO 1 (jj).Invest = FMAX4(j).Flnv
DAOl(jj).Dob = FMAX4(j).FDob
jj=jj+l
End If
Ifjj = 1 Тhen
jj=jj+1
End If
'Формат дробной части вывода
Cells(Rowlndex, Colurnnlndex).NumberFormat = "0.00"
Co\umnIndex = 3 'Выход на начало новой сторки
Rowlndex = Rowlndex + 1 'Переход на следующую строку
End If
Nextj
Rowlndex = Rоwlпdех + 1 'Переход на следующую строку
Соlumпlпdех = I 'Выход на начало новой сторки
Cells(Strlndex, Co\urnnIndex).Va\ue = Sredstva 'фактические затраты
'Эффективность затрат
Cells(StrIndex, Co\urnnlndex + 2).Уаlие = Sredstva/ FMAX4(i).FMAX
Columnlndex = 9 'Выход на начало новой сторки
Cells(StrIndex, Co\umnlndex).Value = "ДАО"
Cells(StrIndex, Colurnnlndex + \).Value = "Инвестиции"
Cells(Strlndex, Colurnnlndex + 2).Value = "Добыча"
Cells(Strlndex, ColumnIndex + З).Vаluе = "Инвестиции/Добыча"
Fог ii = 1 То jj - 1
Cells(Strlndex + ii, Co\urnnlndex).Va\ue = DAO\(ii).Name
Cells(StrIndex + ii, Colurnnlndex + 1).Уаlие = DAO\(ii).Invest
Cells(Strlndex + ii, Columnlndex + 2).Уаlие = DAO\(ii).Dob
Cells(Strlndex + ii, ColurnnIndex + З).Vаluе = DA01(ii).Invest / DA01(ii).Dob
Next ii
Columnlndex = 1 'Выход на начало новой сторки
Next i
Colurnnlndex = 1 'Выход на начало новой сторки
Columns(2).EntireColumn.AutoFit 'Подстрой<а ширины столбца для текста
End Sub
'1)
Sub OpenDataFileO 'Открытие файла с данными
Dim Message, Filename As String
Dim Response As Integer 'Фиксация ответа пользователя
Dim Book As Workbook 'Ссылка на объект Workbook
NewOpen: 'Открытие нужного файла
Message = "Здравствуйте! Будете открывать файл с исходными данными?
" Response = MsgBox(Message, уЬ У esNo, "Оптимизация ")
If Response = vbYes Then
'Открытие окна диалога открытия файла
Application.Dialogs(xlDialog0pen ).Show
, Визуальная оценка файла
Message = "Визуально оцените это тот файл, что вы хотели?
" Response = MsgBox(Message, vbYesNo, "Оптимизация ")
IfResponse = vbYes Тhеп
'Запоминание имени открытой книги
DataBook = ActiveWorkbook.Name
E\se
'Закрываем открытую книгу
ActiveWorkbook.C\ose SaveChanges:=False
GoTo NewOpen 'Переход на Открытие нужного файла
End If
E\se
Message = "Будете работать с открытой книгой Ехсеl с исходными данными? " Response = MsgBox(Message, vbOKCancel, "Оптимизация ")
IfResponse = уЬОК Тhen
'Проверка наличия этой книги среди открытых
Fог Each Book In Workbooks
IfBook.Name <> ТhisWorkbook.Name Тhen
Message = BookName &" Это тот файл, что вы хотели? "
Response = МsgВох(Меssаgе, vbYesNo, "Оптимизация ")
If Response = уЬ У es Then
, Визуальная оценка файла Book.Activate
Message = Book.Name & " Визуально оцените это тот файл, чтовы хотели? "
Response = MsgBox(Message, уЬ У esNo, "Оптимизация ")
If Response = уЬ У es Тhеп
'Запоминание имени открытой книги
DataBook = Book.Name
Exit For
End If
End If
End If
NextBook
If DataBook = '''' Тhеп
Message = "Файла нет среди открытых "_
&" или он Вам не подходит. Будете снова открывать файл?"
Response = MsgBox(Message, уЬ У esNo, "Оптимизация ")
If Response = уЬ У es Then
GoTo NewOpen 'Переход на Открытие нужного файла
Else
Exit Sub
End If
End If
Else 'Отказались работать с открытой книгой
Exit Sub
End If
End If
End Sub
'3)_____________________________
_
Sub GetDataO 'Ввод данных из файла с исходными данными
Dim Sheet As Worksheet
Dim п, пп, ппп As Integer 'рабочий индекс
Dim InvestJow, Dob_row As Integer 'строки с иходными данными
'число листов (ДАО) в книге данных
N_DAO = Workbooks(DataBook).Worksheets.Count
ReDim DAO(N_DAO) 'массив структур ДАО определили
Row= 1
n=О
For Each Sheet In Workbooks(DataBook).Worksheets
n=n+I
'ввод имен ДАО
DAO(n).NameDAO = Sheet.Name
Invest_row = Workbooks(DataBook).Worksheets(DAO(I).NameDAO).CelIs(28, 2).Value
ОоЬ Jow = Workbooks(DataBook).Worksheets(DAO(1 ).NameDAO).Cel1s(29, 2). Value
'Для следующего листа все со второго столбца опять
Column=2
mn=О
'Вычисление размерности по числу месторождений
Dо While_
Workbooks(DataBook).Worksheets(Sheet.Name).Cel1s(Row, Column).VaIue <> "" IfWorkbooks(DataBook).Worksheets(Sheet.Name).CelIs(Row, Column).Value <> _ Workbooks(DataBook).Worksheets(Sheet.Name).CelIs(Row, Column + 1 ).Value_ Тhеп
mn=mn+l
End If
Column = Соlиmn + 1
Loop
'Определение размерности по числу месторождений
ReDim DAO(n).Mestor(nn)
ДОАо(n).коlМеslог = nn
'Ввод имен месторождений и числа вариантов ивестир. и добычи
Column=2
nn=О
nnn =0
Do While_
Workbooks(DataBook).Worksheets(Sheet.Name).CelIs(Row, Column).Value <> ""
IfWorkbooks(OataBook).Worksheets(Sheet.Name).CelIs(Row, Column - 1).Value <> _
Workbooks(OataBook). W orksheets(Sheet.Name ).CelIs(Row, Column). Value _
Тhеn
nn=nn + 1
DAO(n).Mestor(nn). Name = Workbooks(DataBook). Worksheets(Sheet.Name ).CelIs(Row, Column). Value
DАО(п).Меstог(пп).коlVагt = 1
End If
'Определение числа вариантов для месторождения
If Workbooks(DataBook).Worksheets(Sheet.Name).Cells(Row, Column).Value = _ Workbooks(DataBook).Worksheets(Sheet.Name).Cells(Row, Соlиmn + l).Value_
Тhen
DАО(п).Меstог(пп).коlVагt = DАО(п).Меstor(пп).коlVаrt + 1
End If
Соlumn = Соlumn + 1
Loop
'Ввод вариантов инвестирования и добычи
Соlumn=2
nn= 1
nnn = 1
ReDim DAO(n ).Mestor( nn). Inv(DAO(n ).Mestor(nn ).Ко1Vart)
ReDim DAO(n ).Mestor(nn ).Dob(DAO(n ).Mestor(nn ).Ко1V art)
Do Whi!e_
Workbooks(DataBook).Worksheets(Sheet.Name).Cells(Row, Со!иmn).Value <> ""
DAO(n).Mestor(nn).Inv(nnn) = _
Workbooks(DataBook).Worksheets(Sheet.Name).Cells(Invest_row,Соlumn).Value DAO(n).Mestor(nn).Dob(nnn) = _
W orkbooks(DataBook). W orksheets(Sheet.Name). Cells(Dob Jow, Со! иmn ).Value
'Определение числа вариантов для месторождения
'!!!! Доработать строки - года для параметрического ввода
If Workbooks(DataBook). Worksheets(Sheet.Name ).Cells(Row, Соlиmn).Value = _ Workbooks(DataBook).Worksheets(Sheet.Name).Cells(Row, Соlиmn + l).Value_
Тhen
nn = nnn + 1
Else
nnn= 1
End If
If Workbooks(DataBook). Worksheets(Sheet.Name ).Cells(Row, Со!иmn).Value <> _ Workbooks(DataBook).Worksheets(Sheet.Name).Cells(Row, Со!иmn + 1).Value
Тhen
IfWorkbooks(DataBook).Worksheets(Sheet.Name).Cells(Row, Со!иmn + 1).Уа!ие <> "" _ Тhen
nn = nn + 1
ReDim DAO(n ).Mestor(nn). Inv(DAO(n ).Mestor(nn ).КоlУ art)
ReDim DAO(n ).Mestor(nn).Dob(DAO(n ).Mestor(nn). КоlУ art)
End If
End If
Соlumn = Column + 1
Loop
Next Sheet
'Считывание параметров расчета
'Sredstva = Workbooks(DataBook).Worksheets(DAO(1 ).NameDAO).Cells(25, 2).Value
'Delta = Workbooks(DataBook).Worksheets(DA0(1).NameDAO).Cells(26, 2).Value
End Sub
Размещено на Allbest.ru
Подобные документы
Сущность и эволюция структуры мирового рынка природного газа. Особенности международной торговли природным газом. Анализ современного состояния российского газового комплекса. Оценка внешних и внутренних угроз развитию газового комплекса России.
дипломная работа [3,4 M], добавлен 21.05.2013Агропромышленный и производственный комплекс Беларуси. Прогнозирование динамики ВВП на основе системы национальных счетов и экономико-математического моделирования. Электроэнергетика как стратегическая отрасль Беларуси: характеристика и анализ развития.
контрольная работа [368,0 K], добавлен 22.05.2012Газ как одна из главных составляющих современного топливно-энергетического комплекса государства, оценка его роли и значения, перспективы и сферы дальнейшего использования. Направления и тенденции развития инфраструктуры международной торговли газом.
контрольная работа [503,8 K], добавлен 19.03.2016Развитие и углубление внешнеэкономической деятельности предприятий потребительской кооперации. Задачи развития торговли в целях модернизации российского рынка. Корреляционно-регрессионный анализ показателей прогноза социально-экономического развития РФ.
курсовая работа [527,7 K], добавлен 06.12.2014Реформы для решения проблем в сфере электроэнергетики, создание целевой структуры рыночного функционирования энергетики, запуск оптовых и розничных рынков электроэнергии, либерализация торговли. Повышение цен на энергоносители, инвестиционные программы.
реферат [39,0 K], добавлен 17.12.2009Понятие инвестиций, их источники. Инвестиционные решения и их типы. Формирование эффективного инвестиционного портфеля предприятия. Оценка и прогнозирование макроэкономических показателей развития инвестиционного рынка. Принятие инвестиционных решений.
контрольная работа [21,1 K], добавлен 17.12.2015Состояние газовой отрасли России. Независимые производители газа. Инвестиционные возможности газовой промышленности. Основные направления реформы. Пересмотр принципов ценообразования. Преодоление барьеров в недропользовании. Экспорт природного газа.
дипломная работа [1,6 M], добавлен 13.03.2011Итоги деятельности ОАО "Газпром" - крупнейшего российского производителя газа. Объём добычи газового конденсата и нефти. Принципы рационального территориального зонирования. Газовая промышленность Астраханской области: проблемы и перспективы развития.
реферат [56,1 K], добавлен 21.02.2009Характеристика организации и стратегия ее развития. Анализ рынков сбыта. Прогнозирование финансово-хозяйственной деятельности. Создание детского кафе на 35 посадочных мест. Местонахождение, организационно-правовая форма. Общие инвестиционные затраты.
бизнес-план [35,7 K], добавлен 08.04.2015Теоретические основы и основные подходы прогнозирования развития автомобильного рынка России. Ретроспективный анализ автомобильного рынка, сценарии динамики его развития. Составление прогноза состояния автомобильного рынка и верификация прогноза.
курсовая работа [98,4 K], добавлен 28.05.2010