ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Worksheet Functions (https://www.excelbanter.com/excel-worksheet-functions/)
-   -   Finding a value based on a running sum (https://www.excelbanter.com/excel-worksheet-functions/183488-finding-value-based-running-sum.html)

John Casey

Finding a value based on a running sum
 
Here's a poser, I'd appreciate any suggestions you may have.

I have a time series with two values, call them A and B. What I need to do
is count back from the present such that when the sum of values in column A
exceeds a certain level, Excel prints the maximum column B value for the
range.

50 5
75 8
60 7
55 6
110 5

In other words, say there are values in A1:A5 and B1:B5. Row 1 is the oldest
and row 5 the most recent data. If the threshold value in column A is 110,
for row 2 Excel prints 8, for row 3 it prints 8, for row 4 it prints 7, for
row 5 it prints 5.

I've got a very kludgy solution involving a column to test every possible
sum but this can run to hundreds of columns. Even nesting IFs to the maximum
extent possible is incredibly time-consuming , error-prone and still
enormous.

I wonder if you can think of a more elegant solution to this problem. I've
defined it fairly simply but I can think of any number or real-world cases
where exactly this question arises. Any help you can offer would be much
appreciated.

Many thanks in advance,



John

Mike H

Finding a value based on a running sum
 
John


50 5
75 8
60 7
55 6
110 5

In other words, say there are values in A1:A5 and B1:B5. Row 1 is the oldest
and row 5 the most recent data. If the threshold value in column A is 110,
for row 2 Excel prints 8, for row 3 it prints 8, for row 4 it prints 7, for
row 5 it prints 5.


In your data above why is row 1 = 5 and why does row 2 =8 etc

Mike

"John Casey" wrote:

Here's a poser, I'd appreciate any suggestions you may have.

I have a time series with two values, call them A and B. What I need to do
is count back from the present such that when the sum of values in column A
exceeds a certain level, Excel prints the maximum column B value for the
range.

50 5
75 8
60 7
55 6
110 5

In other words, say there are values in A1:A5 and B1:B5. Row 1 is the oldest
and row 5 the most recent data. If the threshold value in column A is 110,
for row 2 Excel prints 8, for row 3 it prints 8, for row 4 it prints 7, for
row 5 it prints 5.

I've got a very kludgy solution involving a column to test every possible
sum but this can run to hundreds of columns. Even nesting IFs to the maximum
extent possible is incredibly time-consuming , error-prone and still
enormous.

I wonder if you can think of a more elegant solution to this problem. I've
defined it fairly simply but I can think of any number or real-world cases
where exactly this question arises. Any help you can offer would be much
appreciated.

Many thanks in advance,



John


Lori

Finding a value based on a running sum
 
Maybe this filled down from c2 (with d1 as threshold value):

=-LOOKUP(-MIN(D$1,SUM(A$1:A2)),-SUBTOTAL({9,4},
OFFSET(A2,ROW(A$1:A2)-ROW(),{0,1},ROW()-ROW(A$1:A2)+1)))

John Casey[_2_]

Finding a value based on a running sum
 
This is it. Brilliant, thanks. I have to work through this as I've never used
most of these functions before, but it's extremely elegant and it gives
exactly the result expected. Sl thanks a million, Lori.

"Lori" wrote:

Maybe this filled down from c2 (with d1 as threshold value):

=-LOOKUP(-MIN(D$1,SUM(A$1:A2)),-SUBTOTAL({9,4},
OFFSET(A2,ROW(A$1:A2)-ROW(),{0,1},ROW()-ROW(A$1:A2)+1)))


Lori

Finding a value based on a running sum
 
Glad it worked for you and thanks for the reply.

Basically, the subtotal part returns an array of running sums and associated
max values. The negatives and min function ensure the data is ordered
correctly for the lookup function.

"John Casey" wrote:

This is it. Brilliant, thanks. I have to work through this as I've never used
most of these functions before, but it's extremely elegant and it gives
exactly the result expected. Sl thanks a million, Lori.

"Lori" wrote:

Maybe this filled down from c2 (with d1 as threshold value):

=-LOOKUP(-MIN(D$1,SUM(A$1:A2)),-SUBTOTAL({9,4},
OFFSET(A2,ROW(A$1:A2)-ROW(),{0,1},ROW()-ROW(A$1:A2)+1)))



All times are GMT +1. The time now is 04:50 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com