Too many levels in the IF function?

  • Thread starter Thread starter trexcel
  • Start date Start date
T

trexcel

I am trying to create an IF formula that I can later paste into data
validation. However to keep this question simple at first, I will ask it this
way.

Try this formula in a blank spread sheet, in cell B1:

=IF(A1=1,M1,IF(A1=2,N1,IF(A1=3,O1,IF(A1=4,P1,IF(A1=5,Q1,IF(A1=6,R1,IF(A1=7,S1,IF(A1=8,T1,0))))))))

That works but if you add another "level":

=IF(A1=1,M1,IF(A1=2,N1,IF(A1=3,O1,IF(A1=4,P1,IF(A1=5,Q1,IF(A1=6,R1,IF(A1=7,S1,IF(A1=8,T1,IF(A1=9,U1:U10,0)))))))))

....You get the following error:

The specified formula cannot be entered because it uses more levels of
nesting than are allowed in the current file format.

Can we change the file format? Is there another totally different method to
achieve this? Do you have any remedy for this at all?

Thanks for your consideration.
 
Hi

In Excel versions below XL2007, there is a maximum of 7 levels of nesting.

One way around
=INDIRECT(CHAR(A1+77)&"1")
 
For what you posted (A1 taking on positive integer values and referencing
consecutive columns starting at Column M in response), you can use this
formula...

=INDEX(M1:U1,1,A1)

You can expand the ending column (Column U) to whatever column you need it
to be.

Rick
 
If that is your set up you can use the offset formula. I don't think there is
a way to get any more nested ifs regardless of file format.

With the offset function you are going to try and manipulate the columns you
want to span. So your formula would be.

=OFFSET(L1,0,A1)

This will start from L1 and pick the cell that is A1 to the right of L1. So
if you have 3 in A1, this will select O1
 
Firstly in your first formula you have 8 levels of Ifs, I was under the
impression that 6 was max. Use Array Formula instead using ctrl-alt-ent for
more
 
Hi Mathew,

Actually Excel 2003 and earlier only let you enter up to 7 levels of
nesting, in 2007 I believe that is 64 levels. However, Excel 2003 and
earlier can calculate more than 7 level deep ifs.
 
I am trying to get the no. of months in order to calculate the depreciation for no. of months it is used and the month can be get from the date the problem is that if the assets is purchased in the month of July than it is 12 months and if in January it is 6 months, so when I need at least 11 nesting to fill out the correct month is there any way to increase the loop length in if formula.

The formula is :

=if(month(O556)=7,12,if(month(O556)=8,11,if(month(O556)=9,10,if(month(O556)=10,9,if(month(O556)=11,8,if(month(O556)=12,7,if(month(O556)=1,6,if(month(O556)=2,5,if(month(O556)=3,4,if(month(O556)=4,3,if(month(O556)=5,2,1)



ShaneDevenshir wrote:

Hi Mathew,Actually Excel 2003 and earlier only let you enter up to 7 levels of
18-Aug-08

Hi Mathew

Actually Excel 2003 and earlier only let you enter up to 7 levels of
nesting, in 2007 I believe that is 64 levels. However, Excel 2003 and
earlier can calculate more than 7 level deep ifs.
--
Cheers
Shane Devenshir

:

Previous Posts In This Thread:

Too many levels in the IF function?
I am trying to create an IF formula that I can later paste into data
validation. However to keep this question simple at first, I will ask it this
way

Try this formula in a blank spread sheet, in cell B1

=IF(A1=1,M1,IF(A1=2,N1,IF(A1=3,O1,IF(A1=4,P1,IF(A1=5,Q1,IF(A1=6,R1,IF(A1=7,S1,IF(A1=8,T1,0)))))))

That works but if you add another "level"

=IF(A1=1,M1,IF(A1=2,N1,IF(A1=3,O1,IF(A1=4,P1,IF(A1=5,Q1,IF(A1=6,R1,IF(A1=7,S1,IF(A1=8,T1,IF(A1=9,U1:U10,0))))))))

....You get the following error

The specified formula cannot be entered because it uses more levels of
nesting than are allowed in the current file format

Can we change the file format? Is there another totally different method to
achieve this? Do you have any remedy for this at all

Thanks for your consideration.

HiIn Excel versions below XL2007, there is a maximum of 7 levels of nesting.
H

In Excel versions below XL2007, there is a maximum of 7 levels of nesting

One way aroun
=INDIRECT(CHAR(A1+77)&"1"

-
Regard
Roger Govier

For what you posted (A1 taking on positive integer values and referencing
For what you posted (A1 taking on positive integer values and referencing
consecutive columns starting at Column M in response), you can use this
formula..

=INDEX(M1:U1,1,A1

You can expand the ending column (Column U) to whatever column you need it
to be

Ric


If that is your set up you can use the offset formula.
If that is your set up you can use the offset formula. I don't think there is
a way to get any more nested ifs regardless of file format

With the offset function you are going to try and manipulate the columns you
want to span. So your formula would be

=OFFSET(L1,0,A1

This will start from L1 and pick the cell that is A1 to the right of L1. So
if you have 3 in A1, this will select O

:

Firstly in your first formula you have 8 levels of Ifs, I was under the
Firstly in your first formula you have 8 levels of Ifs, I was under th
impression that 6 was max. Use Array Formula instead using ctrl-alt-ent fo
more

Re: Too many levels in the IF function?
try this ide

=INDEX(1:1,A1+12

-
Don Guillet
Microsoft MVP Exce
SalesAid Softwar
(e-mail address removed)

Far more efficient than my response, Rick.
Far more efficient than my response, Rick

-
Regard
Roger Govie


Hi Mathew,Actually Excel 2003 and earlier only let you enter up to 7 levels of
Hi Mathew,

Actually Excel 2003 and earlier only let you enter up to 7 levels of
nesting, in 2007 I believe that is 64 levels. However, Excel 2003 and
earlier can calculate more than 7 level deep ifs.
--
Cheers,
Shane Devenshire


:

EggHeadCafe - Software Developer Portal of Choice
WebService Enabling SQL Server 2005 Methods
http://www.eggheadcafe.com/tutorial...d-49734beab0a1/webservice-enabling-sql-s.aspx
 
I am trying to create an IF formula that I can later paste into data
validation.
get the following error:

The specified formula cannot be entered because it uses more than ^$ levelsof
nesting. here is mu Formula

=IF($B$1&$B$2=Control!$J$18,'FY16'!$CD9,IF($B$2&$B$1=Control!$J$19,'FY16'!$BN9,IF($B$2&$B$1=Control!$J$20,'FY16'!$BP9,IF($B$2&$B$1=Control!$J$21,'FY16'!$BR9,IF($B$2&$B$1=Control!$J$22,'FY16'!$BT9,IF($B$2&$B$1=Control!$J$23,'FY16'!$CB9,IF($B$2&$B$1=Control!$J$24,'FY16'!$BS9,IF($B$2&$B$1=Control!$J$26,'FY16'!$BV9,IF($B$2&$B$1=Control!$J$27,'FY16'!$BW9,IF($B$2&$B$1=Control!$J$28,'FY16'!$BY9,IF($B$2&$B$1=Control!$J$29,'FY16'!$BX9,IF($B$2&$B$1=Control!$J$30,'FY16'!$BO9,IF($B$2&$B$1=Control!$J$31,'FY16'!$BQ9,IF($B$2&$B$1=Control!$J$32,'FY16'!$CA9,IF($B$2&$B$1=Control!$J$33,'FY16'!$CC9,IF($B$2&$B$1=Control!$J$34,'FY16'!$BZ9,IF($B$2&$B$1=Control!$J$35,'FY16'!$BU9,IF($B$5+$B$4=10,'FY16'!$AB9,IF($B$2&$B$1=Control!$J$37,'FY16'!$L9,IF($B$2&$B$1=Control!$J$38,'FY16'!$N9,IF($B$2&$B$1=Control!$J$39,'FY16'!$P9,IF($B$2&$B$1=Control!$J$40,'FY16'!$R9,IF($B$2&$B$1=Control!$J$41,'FY16'!$Z9,IF($B$2&$B$1=Control!$J$42,'FY16'!$T9,IF($B$2&$B$1=Control!$J$46,'FY16'!$W9,IF($B$2&$B$1=Control!$J$44,'FY16'!$T9,IF($B$2&$B$1=Control!$J$45,'FY16'!$U9,IF($B$2&$B$1=Control!$J$47,'FY16'!$V9,IF($B$2&$B$1=Control!$J$48,'FY16'!$M9,IF($B$2&$B$1=Control!$J$49,'FY16'!$O9,IF($B$2&$B$1=Control!$J$50,'FY16'!$Y9,IF($B$2&$B$1=Control!$J$51,'FY16'!$AA9,IF($B$2&$B$1=Control!$J$52,'FY16'!$X9,IF($B$2&$B$1=Control!$J$53,'FY16'!$S9,IF($B$5+$B$4=20,'FY16'!$AT9,IF($B$2&$B$1=Control!$M$19,'FY16'!$AD9,IF($B$2&$B$1=Control!$M$20,'FY16'!$AF9,IF($B$2&$B$1=Control!$M$21,'FY16'!$AH9,IF($B$2&$B$1=Control!$M$22,'FY16'!$AJ9,IF($B$2&$B$1=Control!$M$23,'FY16'!$AR9,IF($B$2&$B$1=Control!$M$24,'FY16'!$AI9,IF($B$2&$B$1=Control!$M$26,'FY16'!$AL9,IF($B$2&$B$1=Control!$M$27,'FY16'!$AM9,IF($B$2&$B$1=Control!$M$28,'FY16'!$AO9,IF($B$2&$B$1=Control!$M$29,'FY16'!$AN9,IF($B$2&$B$1=Control!$M$30,'FY16'!$AE9,IF($B$2&$B$1=Control!$M$31,'FY16'!$AG9,IF($B$2&$B$1=Control!$M$32,'FY16'!$AQ9,IF($B$2&$B$1=Control!$M$33,'FY16'!$AS9,IF($B$2&$B$1=Control!$M$34,'FY16'!$AP9,IF($B$2&$B$1=Control!$M$35,'FY16'!$AP9,IF($B$5+$B$4=30,'FY16'!$BL9,IF($B$2&$B$1=Control!$M$37,'FY16'!$AV9,IF($B$2&$B$1=Control!$M$38,'FY16'!$AX9,IF($B$2&$B$1=Control!$M$39,'FY16'!$AZ9,IF($B$2&$B$1=Control!$M$40,'FY16'!$BB9,IF($B$2&$B$1=Control!$M$41,'FY16'!$BJ9,IF($B$2&$B$1=Control!$M$42,'FY16'!$BA9,IF($B$2&$B$1=Control!$M$44,'FY16'!$BD9,IF($B$2&$B$1=Control!$M$45,'FY16'!$BE9,IF($B$2&$B$1=Control!$M$46,'FY16'!$BG9,IF($B$2&$B$1=Control!$M$47,'FY16'!$BF9,IF($B$2&$B$1=Control!$M$48,'FY16'!$AW9,IF($B$2&$B$1=Control!$M$49,'FY16'!$AY9,IF($B$2&$B$1=Control!$M$50,'FY16'!$BI9,IF($B$2&$B$1=Control!$M$51,'FY16'!$BK9,"0"))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
 
I am using Excel 2007 and I am able to enter up to 8 levels of nesting, no more.

Save the file as an excel workbook (top most option) assuming you have the latest excel and you can enter up to 65 'IF' statements...as opposed to 6-8 whatever it is for excel version 2003
 
Back
Top