> you can NEVER return a "2" which represents:
> "If every year since the max experienced a percent increase"

Ah! Oops.

And thank you for the macro. I will try it out.

As for this:

> Second is somewhat of a "logic" issue:
> you really don't need to know what the PERCENT increase/decrease per year
> is to determine if it is increasing/decreasing.
> you really just need to compare the values.

My plan was to later take things a step further, and return values
based on certain *thresholds* of percent change. For example,

- If, since the max, there was a decrease of between 20% and 49%, in
any given year, return a 1.
- If, since the max, there was at least a 50% decrease, in any given
year, return a 2.
and so on.

I suspect your code can be adjusted to easily accommodate this, and
I'll give it a try. Thank you.

On Nov 17, 8:22 am, Paul Schreiner <schreiner_p...@att.net> wrote:
> First of all,
> you can NEVER return a "2" which represents:
> "If every year since the max experienced a percent increase"
>
> Because:  If you find the MAX of the 5 years,
> then check it against the following year and the following year
> there was an INCREASE, then evidently you didn't find the MAX correctly
> because the following year should have been the MAX!!!
>
> Second is somewhat of a "logic" issue:
> you really don't need to know what the PERCENT increase/decrease per year
> is to determine if it is increasing/decreasing.
> you really just need to compare the values.
> 200-300 is a decrease of 100 units.
> (200-300)/300 is still a decrease, expressed as a %, but it's still a 
> decrease.
>
> I THINK I could do it with Excel formulas by finding the max, then using
> an array formula or match() function to find the particular cell.
> then use a LONG IF() statement to check the othercells, but I KNOW I can
> do it with:
> '========================================================================
> Option Explicit
> Public Function FindTrend(Rng As Range)
>     Dim Rval, msg, Rarray, I, MaxVal, MaxInx, MaxAddr
>     Dim TrendFlag
>     ReDim Rarray(Rng.Count - 1)
>     I = -1
>     MaxVal = -100
>     TrendFlag = 1
>    
>     For Each Rval In Rng
>         I = I + 1
>         Rarray(I) = Rval.Value
>         If (IsNumeric(Rval.Value)) Then
>             If Rval.Value > MaxVal Then
>                 MaxVal = Rval.Value
>                 MaxInx = I
>                 MaxAddr = Rval.Address
>             End If
>         End If
>         msg = msg & Chr(13) & Rval.Value
>     Next Rval
>     '-----------------------------------------
>     If MaxInx < UBound(Rarray) Then
>         For I = MaxInx To UBound(Rarray) - 1
>             If Rarray(I + 1) < Rarray(I) Then
>                 If TrendFlag <> 1 Then
>                     TrendFlag = 3
>                     Exit For
>                 End If
>             End If
>         Next I
>         TrendFlag = Replace(MaxAddr, "$", "") & " : " & TrendFlag
>     Else
>         TrendFlag = "Most Recent"
>     End If
>     FindTrend = TrendFlag
> End Function 
> '========================================================================
>
> then, in an adjacent cell, use the formula:
>
> =findtrend(A1:E1)
>
> (assuming the values are in A1:E1)
>
> If your logic changes, let me know and I can help modify the code to fit.
>
> Paul
>
> ----- Original Message ----
> > From: 0 1 <hhholme...@gmail.com>
> > To: MS EXCEL AND VBA MACROS <excel-macros@googlegroups.com>
> > Sent: Tue, November 16, 2010 6:35:44 PM
> > Subject: $$Excel-Macros$$Calculatingdirectionofchangeacrossseveralcells
>
> > I'm trying to return a value (1,2,or3) based on the percentchangein
> > values since a max value. For example, assumecellsA1:E1 contain
> > these values:
>
> > 200,300,200,50,150.
>
> > The values represent the number of widgets produced in year 1, year 2,
> > up to year 5.
>
> > The max value for this example is 300.
>
> > The percentchangefrom 300 to 200 is -.33% (200-300/300).
> > The percentchangefrom 200 to 50 is -.75% (50-200/200).
> > The percentchangefrom 50 to 150 is +2.0% (150-50/50).
>
> > If every year since the max experienced a percent decrease, return a
> > 1.
> > If every year since the max experienced a percent increase, return a
> > 2.
> > In all other cases, e.g., a decrease in one year, an increase in the
> > next (as in this example), return a 3.
>
> > If it's not possible to use a formula for this, a macro would be fine.
> > I'm just stumped as to how to get Excel to calculate this. It needs to
> > find the peak, and then determine whether all subsequent values are
> > constantly decreasing, increasing, or in flux. 
>
> > Thanks for any suggestions. 
> >    
>
> > --
> >----------------------------------------------------------------------------------
> >-
> > Some important links for excel users:
> > 1. Follow us on TWITTER for tips tricks and links :
> >http://twitter.com/exceldailytip
> > 2. Join our LinkedIN group @http://www.linkedin.com/groups?gid=1871310
> > 3. Excel tutorials athttp://www.excel-macros.blogspot.com
> > 4. Learn VBA Macros athttp://www.quickvba.blogspot.com
> > 5. Excel Tips and Tricks athttp://exceldailytip.blogspot.com
>
> > To post to this group, send email to excel-macros@googlegroups.com
>
> > <><><><><><><><><><><><><><><><><><><><><><>
> > Like our page on facebook , Just follow below link
> >http://www.facebook.com/pages/discussexcelcom/160307843985936?v=wall&;...

-- 
----------------------------------------------------------------------------------
Some important links for excel users:
1. Follow us on TWITTER for tips tricks and links : 
http://twitter.com/exceldailytip
2. Join our LinkedIN group @ http://www.linkedin.com/groups?gid=1871310
3. Excel tutorials at http://www.excel-macros.blogspot.com
4. Learn VBA Macros at http://www.quickvba.blogspot.com
5. Excel Tips and Tricks at http://exceldailytip.blogspot.com
 
To post to this group, send email to excel-macros@googlegroups.com

<><><><><><><><><><><><><><><><><><><><><><>
Like our page on facebook , Just follow below link
http://www.facebook.com/pages/discussexcelcom/160307843985936?v=wall&ref=ts

Reply via email to