Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Проверка выполнения множества условий применительно к диапазонам данных, макрос очень долго работает с большим объемом данных
 
Добрый день, форумчане! Написала код, свою задачу он выполняет, но когда дело доходит до больших объемов данных, на выполнение уходит больше часа. Какие могут быть идеи по оптимизации работы кода? Файл приложить не получается, размер 300кб не загружается на форум.

Код
Option Base 1

Sub newera()

a = Timer

Dim Array_Str(1 To 8) As String, Array_2(1 To 7) As String, y As Integer, j As Long, o As Integer, p As Integer, q As Integer, Destination As Range

MinPos = Cells(4, 8)
MaxPos = Cells(4, 9)
MinNeu = Cells(5, 8)
MaxNeu = Cells(5, 9)
MinNeg = Cells(6, 8)
MaxNeg = Cells(6, 9)

For j = 28 To Cells(Rows.Count, 1).End(xlUp).Row

For y = 28 To Cells(Rows.Count, 10).End(xlUp).Row

o = (WorksheetFunction.CountIf(Range(Cells(j, 1), Cells(j, 8)), "positive") + WorksheetFunction.CountIf(Range(Cells(y, 10), Cells(y, 16)), "positive"))
p = (WorksheetFunction.CountIf(Range(Cells(j, 1), Cells(j, 8)), "neutral") + WorksheetFunction.CountIf(Range(Cells(y, 10), Cells(y, 16)), "neutral"))
q = (WorksheetFunction.CountIf(Range(Cells(j, 1), Cells(j, 8)), "negative") + WorksheetFunction.CountIf(Range(Cells(y, 10), Cells(y, 16)), "negative"))


If o >= MinPos And o <= MaxPos And p >= MinNeu And p <= MaxNeu And q >= MinNeg And q <= MaxNeg Then

Array_Str(1) = Cells(j, 1)
Array_Str(2) = Cells(j, 2)
Array_Str(3) = Cells(j, 3)
Array_Str(4) = Cells(j, 4)
Array_Str(5) = Cells(j, 5)
Array_Str(6) = Cells(j, 6)
Array_Str(7) = Cells(j, 7)
Array_Str(8) = Cells(j, 8)

Array_2(1) = Cells(y, 10)
Array_2(2) = Cells(y, 11)
Array_2(3) = Cells(y, 12)
Array_2(4) = Cells(y, 13)
Array_2(5) = Cells(y, 14)
Array_2(6) = Cells(y, 15)
Array_2(7) = Cells(y, 16)

I = Cells(Rows.Count, 20).End(xlUp).Row + 1

Set Destination = Range(Cells(I, 20), Cells(I, 20))

Set Destination = Destination.Resize(1, UBound(Array_Str))

Destination.Value = Array_Str

Set Destination = Range(Cells(I, 28), Cells(I, 28))

Set Destination = Destination.Resize(1, UBound(Array_2))

Destination.Value = Array_2

Else

End If

Next y

Next j

MsgBox Timer - a

End Sub

Перебор всех возможных вариантов, VBA для этой задачи
 
Здравствуйте! Необходим код для перебора всех возможных вариантов - 15 событий по 3 исхода в каждом. Как такое сделать? Пытаюсь вникнуть в VBA, но пока что до такого мне самостоятельно еще далеко, знаю лишь несколько операторов...
Макрос для получения набора комбинаций, набор комбинаций на основании экспертной ошибки
 
Доброго времени суток, форумчане. Делаю исследование по принятию решений на основании экспертных ошибок. Буду ОЧЕНЬ признательна получить хоть какую помощь в данном вопросе. Так поняла, что без макросов здесь не обойтись, а я в них зеро.

Суть: имеем ряд параметров (априори 15) (инфляция, колебание курса и тд), по каждому критерию имеем три варианта развития прогноза (пессимистичный, нейтральный, оптимистичный). Имеем мнения экспертов по каждому параметру и делаем прогноз на основании истории ошибок этих экспертов.

Принцип работы:
1) имеется набор экспертных мнений (в процентном выражении вероятности согласно оценки эксперта)
2) статистически выведенная средняя вероятность правильной оценки
3) предполагаемое количество позитивных, негативных и нейтральных исходов

Что хотим получить в итоге: множество комбинаций подходящих под заданные ограничения в заданных пределах.
Прикрепляю Excel-файл для более понятного описания проблемы.

Заранее большое спасибо за вашу помощь!
Страницы: 1
Наверх