Может быть, это можно сделать с помощью формулы, использующей SUM, OFFSET и INDEX.
Однако я не беспокоюсь о сложных формулах и вместо этого прибегаю к ALT+ F11.
Sub DateOfShortage() StartLine = 2 EndLine = 6 StartColumn = 3 EndColumn = 7 For Line = StartLine To EndLine Stock = Cells(Line, 2) For Column = StartColumn To EndColumn Stock = Stock - Cells(Line, Column).Value If Stock <= 0 Then Cells(Line, EndColumn + 1).Value = Cells(1, Column).Value Exit For End If Next Column Next Line End Sub
Пример данных и результатов:
Если вы добавите строку « Расчет» для каждого элемента, как показано на одном из ваших снимков экрана, вы можете легко получить требуемую дату с помощью формулы массива (все еще выглядит слишком сложной для моих вкусов):