Вложенный цикл for с do до VBA
Вот что я пытаюсь сделать: у меня есть StockOH в столбце (D), и я хочу знать, сколько дней продаж я могу покрыть с каждой суммой. Так, например, если значение stockOH в D2 больше суммы значений E2:E5, но меньше Sum(E2:E6), это означает, что я могу покрыть 4 дня продаж.
Я использую Do до тех пор, пока функция не вложена в цикл for. Я не уверен, почему первое решение верное, а следующие - нет.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim y, x, Ssellout As Double
'loop thorugh the stock values in column D
For y = 2 To 5
'Get each amount of stock
Ssellout = Cells(y, 5).Value
x = y
'FInd the breakout point when sum of sellout is higher than stockOH
Do Until Cells(y, 4).Value < Ssellout
'Add 1 to the counter in case condition is not valid
x = x + 1
'REport value found as a breakeven
Cells(y, 6).Value = x
'Add another day of sales to the sum of sales
Ssellout = Ssellout + Cells(x, 5).Value
Loop
MsgBox (y)
Next
End Sub
1 ответ
Наконец-то я справился с функциями FOr Loop и Do While.
Вот код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim x, y As Integer
Dim sellout, stock As Double
For y = 0 To 4
'Define counter for sum IMPORTANT it should be inside the for loop
sellout = 0
x = 2
Do While Cells(2 + y, 4).Value > sellout
sellout = sellout + Cells(x + y, 5).Value
Cells(2 + y, 6).Value = x - 2
x = x + 1
Loop
Next
End Sub