Страницы: 1
RSS
вычисление даты накопления определенной суммы, замена 2 столбцов формул одной формулой
 
Добрый день!
в различные периоды времени происходили процессы с разной интенсивностью. Задача вычислить дату, когда сумма результатов этих процессов достигает определенной величины. Получилось с помощью дополнительных вычислений для каждой даты действия процессов (лист расч).
Можно ли это сделать одной формулой?
С уважением.
Изменено: dude - 07.12.2014 13:33:55 (прикрепил не тот файл)
 
Цитата
dude пишет: для каждой даты действия процессов (лист расч).
Ни листа, ни дат - инкогнито, т.к. угадай-ка, однако... ;)
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
 
сорри, заменил
 
на листе "осн" формула массива
=ПОИСКПОЗ(155;МУМНОЖ(Ч(СТРОКА(A1:ИНДЕКС(A:A;B1-A1+1))>=ТРАНСП(СТРОКА(A1:ИНДЕКС(A:A;B1-A1+1))));МУМНОЖ((СТРОКА(ИНДЕКС(A:A;A1):ИНДЕКС(A:A;B1))>=ТРАНСП(A3:A16))*(СТРОКА(ИНДЕКС(A:A;A1):ИНДЕКС(A:A;B1))<=ТРАНСП(B3:B16));D3:D16)))+A1-1

где 155 - искомая сумма
 
класс, СПАСИБО!!!
я пробовал ДВССЫЛ(СТРОКА(A1&":"&B1) вместо Ч(СТРОКА(A1:ИНДЕКС(A:A;B1-A1+1)) и только 1 раз МУМНОЖ
 
К сожалению на периоде около 30 лет эксель сообщает, что у него закончились ресурсы, ну и далее
пришлось делать udf

Код
Function dtnak(etal As Double, ddd As Range, ves As Range) As Date
Dim i, j
Dim mind As Date, maxd As Date
Dim dddm(), vesm(), narm()
dddm = ddd
vesm = ves
mind = Application.WorksheetFunction.Min(ddd)
maxd = Application.WorksheetFunction.Max(ddd)
ReDim narm(0 To maxd - mind + 1)
For i = mind To maxd
For j = 1 To UBound(dddm)
If dddm(j, 1) <= i And dddm(j, 2) >= i Then narm(i + 1 - mind) = vesm(j, 1) + narm(i + 1 - mind)
Next j
narm(i + 1 - mind) = narm(i - mind) + narm(i + 1 - mind)
If narm(i + 1 - mind) >= etal Then dtnak = i: Exit For: Exit Function
Next i
End Function
 
Страницы: 1
Наверх