Перемещение групп из 10 строк вправо на временной шкале до тех пор, пока все они не получат нулевой балл, необходимо оптимизировать

#excel #vba

Вопрос:

В планировщике ресурсов, над которым я работаю, мне нужна помощь с некоторыми циклами. Я могу создать несколько групп по 10 строк. Каждая группа из 10 человек представляет проект. первая строка в каждой группе определяет дату начала, то есть дату начала каждого проекта. Я могу циклически перемещать проекты постепенно вправо, используя DateAdd, пока не исчезнут конфликты ресурсов, представленные переменной = 0. Я не могу понять, как затем перемещать каждую дату начала влево до тех пор, пока одна и та же переменная не превысит 0, а затем переместить ее вперед на 1 ww в DateAdd. Я хотел бы пройтись по всем проектам до тех пор, пока переменная =0 не будет использована в течение наименьшего промежутка времени на временной шкале.

 Private Sub CommandButton5_Click() 'Testing ideas for optimiztion 'declare and set variables Dim ws As Worksheet Set ws = Worksheets("Forecasting") Dim short, shortmem, r, projects, newprojs As Long Dim rinc, rstart As Integer Dim oSheet2 As Worksheet Dim oLookFor As Range rstart = 26 rinc = 10 Set oSheet2 = ThisWorkbook.Worksheets("DataTables") Set oLookFor = oSheet2.Range("C5") Dim colf As Variant colf = "F" Set short = ws.Range("B7") projects = ws.Range("B4").Value If projects gt; 2 Then Set sdate = ws.Range("F26")  For projects = projects To 1 Step -1    Set sdate = ws.Range(colf amp; rstart)  ws.Range(colf amp; rstart) = DateAdd("ww", 0, sdate) ' number after "ww" is number of weeks to advance.  rstart = (rstart   10)  Range(colf amp; rstart) = DateAdd("ww", 5, sdate) ' number after "ww" is number of weeks to advance project 3.  newprojs = projects  For newprojs = newprojs To 1 Step -1    Set sdate = ws.Range(colf amp; rstart)  rstart = (rstart   10)  Range(colf amp; rstart) = DateAdd("ww", 11 * oLookFor, sdate) ' number after "ww" is number of weeks to advance projects 3 - end.  Next newprojs  Next projects End If End Sub