Skip to main content

Hi everyone,



We have updated our service pricing in October and I’m trying to update the calculation for services rendered after 10/1. In the below code {Direct Time} is {Direct TIme} + {Indirect Time}. Is it possible to use calculations like this within a nested IF statement?



(IF


AND(


{FY}=“22”,


{MM}>=“10”,


({Total Time} * {Rate by FY by MM})+{Pass through Materials},


({Direct Time} * {Rate by FY by MM})+{Pass through Materials},


)


)



Best,



Ben

Hi,



it seems like something not OK in your syntax


assuming you want something like


IF (Statement1 AND Statement2 AND Statement3) then X else Y,


in your text, there are 4 statements and no X and Y


it should be written as (added more linebreaks to highlight statement part):







IF(



AND(

Statement1,

Statement2,

Statement3

),



X,

Y

)


@Alexey_Gusev Thanks, you were correct on the syntax.



However, even with this corrected the calculation does not work. I can return simple text strings, however can’t get it to perform calculation A if the and conditions are met, else B if not.


Ex:


IF(


AND(


{FY}=“22”,


{MM}=“10”


),


“A”,


“B”


)


^^this works


IF(


AND(


{FY}=“22”,


{MM}>=“10”


),


{Total Time} * {Rate by FY by MM}+{Pass through Materials},


{Direct Time} * {Rate by FY by MM}+{Pass through Materials}


)


^^ this does not.





  1. Can anyone confirm if it is possible to do conditional calculations?


  2. If not possible could i do the calculations in different fields and create a conditional to pull one of these values based on the parameters?



And the answer is 1. no, 2. yes.



IF(


AND(


{FY}>=“22”,


{MM}>=“10”


),


{Post 10/2021},{Pre 10/2021})


And the answer is 1. no, 2. yes.



IF(


AND(


{FY}>=“22”,


{MM}>=“10”


),


{Post 10/2021},{Pre 10/2021})


For numeric comparisons, the numbers that you’re comparing against should not be in quotes. Airtable will sometimes auto-convert strings to numbers for mathematical operations, but it’s not something that should be relied upon.





If {FY} and {MM} are numeric fields (i.e. fields that output numeric values), try this instead:



IF(

AND(

{FY} = 22,

{MM} >= 10

),

{Total Time} * {Rate by FY by MM} + {Pass through Materials},

{Direct Time} * {Rate by FY by MM} + {Pass through Materials}

)



If those fields output strings, use the VALUE() function to convert them to numbers before comparison, like this:



IF(

AND(

VALUE({FY}) = 22,

VALUE({MM}) >= 10

),

{Total Time} * {Rate by FY by MM} + {Pass through Materials},

{Direct Time} * {Rate by FY by MM} + {Pass through Materials}

)



This could also be simplified a bit. Because all that you’re changing is the first operand in the “inner” formula—{Total Time} vs {Direct Time}—the overall formula could be written like this (using the second VALUE()-driven version as an example):



IF(

AND(

VALUE({FY}) = 22,

VALUE({MM}) >= 10

),

{Total Time}, {Direct Time}

) * {Rate by FY by MM} + {Pass through Materials}


Reply