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

Страницы: 1
Проверка выполнения множества условий применительно к диапазонам данных, макрос очень долго работает с большим объемом данных
 
Hugo, тоже встретила в источниках, что производительность они напрягают, а касательно вашей версии кода - она делает то что я хотела за 452 - 650 секунд! браво! :))) спасибо огромное! :)
vikttur, а куда вставляем этот код? в начало макроса/цикла?
Проверка выполнения множества условий применительно к диапазонам данных, макрос очень долго работает с большим объемом данных
 
Hugo,да я вот пробовала со status bar и еще пыталась интегрировать progressive bar, но с тем пока что не получилось..
Проверка выполнения множества условий применительно к диапазонам данных, макрос очень долго работает с большим объемом данных
 
Hugo,работает, спасибо! с 5,5 секунд время выполнения сократилось до 3,5 (по контрольному набору данных сужу). Но вот при работе с полными данными сегодня просидела час и макрос все еще был в работе, не выдержала. Попробую сейчас с таким кодом, если минут за 40 выполнится уже будет что-то! Спасибо огромное! Ну и если у кого есть еще какие идеи именно по оптимизации - очень welcome!
Проверка выполнения множества условий применительно к диапазонам данных, макрос очень долго работает с большим объемом данных
 
Hugo,спасибо за помощь! Буду признательна, если кто поможет с коллекциями..
Проверка выполнения множества условий применительно к диапазонам данных, макрос очень долго работает с большим объемом данных
 
Hugo,нет у меня mac os... Я уже по сайтам полазила, ошибка связана с системными особенностями?
Проверка выполнения множества условий применительно к диапазонам данных, макрос очень долго работает с большим объемом данных
 
Hugo,ругается следующим образом:

Проверка выполнения множества условий применительно к диапазонам данных, макрос очень долго работает с большим объемом данных
 
Hugo,спасибо за участие, вот уменьшила объем документа
Проверка выполнения множества условий применительно к диапазонам данных, макрос очень долго работает с большим объемом данных
 
Добрый день, форумчане! Написала код, свою задачу он выполняет, но когда дело доходит до больших объемов данных, на выполнение уходит больше часа. Какие могут быть идеи по оптимизации работы кода? Файл приложить не получается, размер 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 для этой задачи
 
Андрей VG, работает, спасибо! А как быть со следующими "партиями" по 729? (или можно даже больше). Можно ведь самой изменять код и выдавать следующие наборы? Просто у меня цель получить на само множество 3^15, а с помощью ограничений произвести большую селекцию полученных исходов и вывести только подходящие под мои ограничения исходы. Попробую поработать таким образом, спасибо за ваши подсказки!
Перебор всех возможных вариантов, VBA для этой задачи
 
RAN, да я понимаю, что дело в первой процедуре, только вот дело в том, что больше нигде она не встречается и во всяком случае так не называется..
вот полный код:
Скрытый текст
Перебор всех возможных вариантов, VBA для этой задачи
 
RAN, а какие из приведенных процедур имеют одинаковое название? (Я же вставляю код в Sheet1, верно?)
Перебор всех возможных вариантов, VBA для этой задачи
 
Андрей VG,спасибо большое за участие, но мой эксель ругается следующим образом:
Перебор всех возможных вариантов, VBA для этой задачи
 
yoozhik,ура, для 5 работает!!! Теперь буду пробовать с массивом, сначала посмотрю в интернете материалы на эту тему! вы мне очень помогаете!
Перебор всех возможных вариантов, VBA для этой задачи
 
yoozhik,имеется ввиду переменная us? вторую часть фразы не совсем поняла... наверное мне было бы понятнее сравнить этот код для трех и для четырех условий, что и как меняется, тогда уже по логике пойму как расширить для других вариантов...
Перебор всех возможных вариантов, VBA для этой задачи
 
yoozhik,огромное спасибо! на вечер мне работка нашлась уж точно! очень помогли мне! А по поводу 15... даже совету какому то, подсказке буду очень благодарна..
Перебор всех возможных вариантов, VBA для этой задачи
 
yoozhik,так сейчас буду разбираться, я очень благодарна за помощь! По поводу 15 условий у меня задача не вывести на экран эти 3^15 переборов, а поработать с ними отсеивая ограничениями ненужные и вывести уже отфильтрованные, поэтому я все же надеюсь задав кодом эти 3^15 вариантов потом кодом же их отсеять (то есть вывода на экран не будет на промежуточном этапе) и получить вполне вменяемую табличку из 300-400 вариантов... Задумка такая....
Перебор всех возможных вариантов, VBA для этой задачи
 
yoozhik,примерно поняла логику, что же, попробую "потыкаться"!  Спасибо..!
Перебор всех возможных вариантов, VBA для этой задачи
 
yoozhik,да, выглядит правильно! Спасибо!! Но адаптировать этот код под 15 условий будет сложно (3^15 вместо 3^3)? (Пытаюсь разглядеть, что в нем можно поменять для этого).

P.S.: прошу прощение за "негативы", хотела для удобства обозначить как 1,2,3, но потом решила оставить условие задачи с такими параметрами :)
Перебор всех возможных вариантов, VBA для этой задачи
 
JayBhagavan, ого!! ничего себе решение! Спасибо! Попробую с формулой поработать, вдруг и без VBA обойдусь! Надеюсь на это! Вы мне помогли очень!
Перебор всех возможных вариантов, VBA для этой задачи
 
JayBhagavan, да, я наверное плохо описала, прошу прощение.. Посижу, потыкаюсь, различные видео уже мало помогают на таком уровне... Спасибо большое за помощь, как никак, а продвигаюсь потихоньку! Может кто еще чем сможет помочь, подсказать..
Перебор всех возможных вариантов, VBA для этой задачи
 
JayBhagavan,ну как же... я же хотела как в примере, где представлен полный перебор вариантов... а макрос выдает только три варианта, которые повторяются... (прикрепляю скрин желаемого, это было в примере ранее, который я заполнила от руки)
Перебор всех возможных вариантов, VBA для этой задачи
 
JayBhagavan,мне вот такое выдал, три варианта повторяющихся все время...
Перебор всех возможных вариантов, VBA для этой задачи
 
Спасибо большое, буду разбираться! Но вот попробовала подставить этот код в пример и ничего не происходит, хотелось бы потыкаться именно с рабочим макросом, можно это сделать? Я прикрепляю "бланк" и нужно чтобы по запуску макроса заполнилась табличка (ниже я приписала как бы дано, возможно оно и не нужно). Просто с работающим макросом будет понятнее... Спасибо!
Перебор всех возможных вариантов, VBA для этой задачи
 
JayBhagavan,возможно, а как посмотреть результат? По коду сложно понять... Логика вывода результата должна быть такой, прикрепляю пример с меньшим кол-вом переборов (для удобства). (Для 3^15 вывод результатов не потребуется, потребуется дальнейших их отсев опять же с помощью кода, но вот для начала отсева этот набор все же необходимо (по моей логике))
Перебор всех возможных вариантов, VBA для этой задачи
 
JayBhagavan, у нас есть 15 параметров и три возможных варианта их развития (негативный, нейтральный и позитивный). Хочется создать код, который будет выдавать общее кол-во возможных переборов (3^15) исходов эти параметров. Естественно на экран выводить их не нужно, потому что такое кол-во в лист не вместится, код нужен для дальнейшей селекции этих вариантов, первый шаг так сказать.
                негатив       нейтрал    позитив
пар 1            
пар 2
пар 3
...
пар 15
Перебор всех возможных вариантов, VBA для этой задачи
 
Здравствуйте! Необходим код для перебора всех возможных вариантов - 15 событий по 3 исхода в каждом. Как такое сделать? Пытаюсь вникнуть в VBA, но пока что до такого мне самостоятельно еще далеко, знаю лишь несколько операторов...
Макрос для получения набора комбинаций, набор комбинаций на основании экспертной ошибки
 
Уточню: идея такая, чтобы свести к минимуму количество прогнозов, для этого вводятся статистически выведенные ограничения.
Макрос для получения набора комбинаций, набор комбинаций на основании экспертной ошибки
 
Немного дополнила пример, добавив еще одно ограничение, способное повысить качество и еще более сократить кол-во полученных прогнозов.
Макрос для получения набора комбинаций, набор комбинаций на основании экспертной ошибки
 
В том то и дело, что нет, ибо есть ряд ограничений, что сокращает их количество.
Макрос для получения набора комбинаций, набор комбинаций на основании экспертной ошибки
 
Доброго времени суток, форумчане. Делаю исследование по принятию решений на основании экспертных ошибок. Буду ОЧЕНЬ признательна получить хоть какую помощь в данном вопросе. Так поняла, что без макросов здесь не обойтись, а я в них зеро.

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

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

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

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