How to check with VBA if an excel formula has multiple terms in it?
Posted on 2016-11-30
My macro creates formulas to be displayed in word, so I don't want unnecessary brackets. The formula obtained from an excel cell will be multiplied by a factor, so a bracket will be necessary if it has many terms.
eg the factor is A20, I want the program to know that if the formula is A1, the A1*A20 is fine without bracket, however if the formula is A1+B1, then A1+B1*A20 is incorrect. It will have to be (A1+B1)*A20. I'll deal with the brackets the current function should just return if there are multiple terms.
It is fine if the answer just explains how the program should work, in case you don't use VBA. (Ideally an explanation should have enough detail for me to be able to write the correct program based on it)
Example inputs and outputs (true for multiple terms)
I: (A1-B1)/LOG(A1-B1) O: False
I: (A1+B1)/(A2-B2) O:False
I: PI()/A1 O: False
I: A1 O:False
I: LOG(A1)-(A1-B1)/C1 O:True
I: A1+B1 O: True
I: (A1+B1)/(A2-B2)-(C1+D1)/(C2-D2) O:True
I was considering some not too elegant solutions before.
For example I could just substitute some numbers into the formula (with the factor) and see if adding a bracket returns a different value. (I think this would not always work)
I was also considering finding each + and - sign and looking for the terms next to them to see if they are enclosed in a bracket together somewhere. I'm not sure how to implement this and I can't prove to myself that it always works.