function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
BuellBuell 

Please help me shrink the formula.

I'm wanting a formula field that shows an opportunity expiration date, calculated from a drop down that shows the term in years and the input close date.  Here is what I have, and what SFDC is saying.  Thanks in advance.
 
Code:
IF( ISPICKVAL( Deal_Term__c , '1 Year') , DATE( YEAR(CloseDate) + 1 , MONTH(CloseDate) , DAY(CloseDate) ) ,
IF( ISPICKVAL( Deal_Term__c , '2 Year') , DATE( YEAR(CloseDate) + 2 , MONTH(CloseDate) , DAY(CloseDate) ) ,
IF( ISPICKVAL( Deal_Term__c , '3 Year') , DATE( YEAR(CloseDate) + 3 , MONTH(CloseDate) , DAY(CloseDate) ) ,
IF( ISPICKVAL( Deal_Term__c , '4 Year') , DATE( YEAR(CloseDate) + 4 , MONTH(CloseDate) , DAY(CloseDate) ) ,
DATE( YEAR(CloseDate) + 5 , MONTH(CloseDate) , DAY(CloseDate) )))))


 

Compiled formula is too big to execute (6,162 characters). Maximum size is 5,000 characters.



Message Edited by Buell on 08-07-2008 01:20 PM

Message Edited by Buell on 08-07-2008 01:20 PM
Best Answer chosen by Admin (Salesforce Developers) 
BuellBuell
Had to correct for leap years.
 
Code:
DATE(
     IF( ISPICKVAL( Deal_Term__c , '1 Year') ,  YEAR(CloseDate) + 1,
     IF( ISPICKVAL( Deal_Term__c , '2 Year') ,  YEAR(CloseDate) + 2, 
     IF( ISPICKVAL( Deal_Term__c , '3 Year') ,  YEAR(CloseDate) + 3,
     IF( ISPICKVAL( Deal_Term__c , '4 Year') ,  YEAR(CloseDate) + 4,
     YEAR(CloseDate) + 5)))),
     MONTH(CloseDate),
     IF( AND(DAY(CloseDate) = 29,MONTH(CloseDate) = 02) , 28, DAY(CloseDate)))

 

All Answers

BuellBuell
Figured out another option. Compiles to 3,534.
 
Code:
DATE(
     IF( ISPICKVAL( Deal_Term__c , '1 Year') ,  YEAR(CloseDate) + 1,
     IF( ISPICKVAL( Deal_Term__c , '2 Year') ,  YEAR(CloseDate) + 2, 
     IF( ISPICKVAL( Deal_Term__c , '3 Year') ,  YEAR(CloseDate) + 3,
     IF( ISPICKVAL( Deal_Term__c , '4 Year') ,  YEAR(CloseDate) + 4,
     YEAR(CloseDate) + 5)))),
     MONTH(CloseDate),
     DAY(CloseDate))

 


Message Edited by Buell on 08-07-2008 01:09 PM
BuellBuell
Had to correct for leap years.
 
Code:
DATE(
     IF( ISPICKVAL( Deal_Term__c , '1 Year') ,  YEAR(CloseDate) + 1,
     IF( ISPICKVAL( Deal_Term__c , '2 Year') ,  YEAR(CloseDate) + 2, 
     IF( ISPICKVAL( Deal_Term__c , '3 Year') ,  YEAR(CloseDate) + 3,
     IF( ISPICKVAL( Deal_Term__c , '4 Year') ,  YEAR(CloseDate) + 4,
     YEAR(CloseDate) + 5)))),
     MONTH(CloseDate),
     IF( AND(DAY(CloseDate) = 29,MONTH(CloseDate) = 02) , 28, DAY(CloseDate)))

 
This was selected as the best answer
JakesterJakester
wow buell - very nice!!