Имеем даты, поступающие по договорам суммы и номера договоров. Как определить дату (Бог с ней, с датой - позицию), при которой по определенному договору была накоплена определенная сумма. П.С. Архив читал
Sub test5()
Dim a As Long, n As Long
a = 0
n = 4
lr = Cells(Rows.Count, 2).End(xlUp).Row
Do While a < Cells(1, 8)
If Cells(n, 5) = Cells(2, 8) Then
a = a + Cells(n, 3)
End If
n = n + 1
If n >= lr Then
MsgBox "НЕ НАКОПЛЕНО"
GoTo 1
End If
Loop
Cells(5, 8) = CDate(Cells(n - 1, 2))
Cells(6, 8) = "Находится в строке " & n - 1
1
End Sub
То есть мы вводим доп.столбец, и уже с его помощью определяем индекс для одного выбранного значения накопленной суммы по выбранному договору
Еще раз приношу извинения, вопрос в самом начале был поставлен несколько некорректно. Дело в том, что нужно определять дату (индекс) для разных (всех) договоров, накопленные по ним суммы тоже будут разные. И № договоров, и суммы указываются в отдельной таблице... Вот с этим можете помочь?
konsvg, файл пример приложите нормальный и покажите желаемый результат с учетом
Цитата
Дело в том, что нужно определять дату (индекс) для разных (всех) договоров, накопленные по ним суммы тоже будут разные. И № договоров, и суммы указываются в отдельной таблице..
Для определения позиции по одному параметру - накопленной сумме - я использовал формулу для массива =ПОИСКПОЗ(2;2/(ПРОМЕЖУТОЧНЫЕ.ИТОГИ(9;СМЕЩ($C$1;;;СТРОКА($C$4:$C$47)))<=H$1)) Но как ее заставить проверять еще и номер договора - не могу разобраться А договоров много - больше сотни
konsvg, ну формулой я пасс макросом вроде то что нужно
Код
Sub test5()
Dim a As Long, n As Long
a = 0
For i = 4 To Worksheets("Договоры").Cells(Rows.Count, 2).End(xlUp).Row
lr = Worksheets("Платежи").Cells(Rows.Count, 2).End(xlUp).Row
For n = 4 To lr
If Worksheets("Платежи").Cells(n, 5) = Worksheets("Договоры").Cells(i, 2) Then
a = a + Worksheets("Платежи").Cells(n, 3)
End If
If a >= Worksheets("Договоры").Cells(i, 3) Then
Worksheets("Договоры").Cells(i, 4) = CDate(Worksheets("Платежи").Cells(n, 2))
GoTo 1
End If
Next n
1 a = 0
Next i
End Sub
На всякий случай повторно сформулирую задачу. На листе "Договоры" в каждую ячейку столбца "Даты" я должен ввести формулу с параметрами из столбцов "№ договора" и "Накопленная сумма". И получить дату, при которой по этому договору была накоплена соответствующая сумма. Данные для расчета берутся с листа "Платежи".
Вводите как формулу массива: =ИНДЕКС(Платежи!$B$4:B47;ПОИСКПОЗ(ИСТИНА;СУММЕСЛИ(СМЕЩ(Платежи!E$4;;;СТРОКА($C$4:$C$47)-3;);B4;СМЕЩ(Платежи!C$4;;;СТРОКА($C$4:$C$47)-3;))>=C4;))
"..Сладку ягоду рвали вместе, горьку ягоду я одна."