2

I want to extract the numerical part of this formula, so I can work with it in another cell:

=8464184.94*$S35

The formula is in R35.

I did see the post in Is it possible to extract part of a formula in excel? but despite what is said there, there is no such function as EVALUATE() in standard Excel (in my Case Excel 2021 DESKTOP).

=RIGHT(LEFT(FORMULATEXT(R35),(FIND("*",FORMULATEXT(R35),1)-1)),LEN(LEFT(FORMULATEXT(R35),(FIND("*",FORMULATEXT(R35),1)-1)))-1)

works but is, as you can see, pretty ghastly.

8
  • Try: =TEXTAFTER(TEXTBEFORE(FORMULATEXT(R35),"*"),"=") don't think this needs the Evaluate() feature of Excel which uses Excel Macro 4.0 functions Commented Aug 5 at 13:03
  • 1
    Or with older versions: =LET(a, FORMULATEXT(R35),TRIM(LEFT(SUBSTITUTE(RIGHT(a,LEN(a)-1),"*",REPT(" ",100)),100))) Commented Aug 5 at 13:06
  • The first one returned a NAME error; second one worked. Not allowed to upvote your comment or answer, so thank you. I have to avoid macro functions, VBA and add-ins, otherwise these workbooks won't work for the the people I send them to.
    – Steev43230
    Commented Aug 5 at 14:01
  • 2
    Is it always a multiplication? then maybe the reverse operation will provide the desired result: =R35/$S35 Commented Aug 5 at 20:37
  • @cybernetifc.nomad - Yes, it is "always" multiplication in this specific instance. To Mayukh Bhattacharya - TEXTSPLIT(), TEXTAFTER(), and TEXTBEFORE() are not in Exce; 2021 (desktop, standalone version). At least not unless there is some special addin that has to be activated.
    – Steev43230
    Commented Aug 6 at 1:59

2 Answers 2

3

You could try using the following in Excel 2021

enter image description here


=LET(a, FORMULATEXT(B2),TRIM(LEFT(SUBSTITUTE(RIGHT(a,LEN(a)-1),"*",REPT(" ",100)),100)))

In MS365

=INDEX(TEXTSPLIT(FORMULATEXT(B2),{"=","*"},,1),1)

Or,

=TEXTAFTER(TEXTBEFORE(FORMULATEXT(B2),"*"),"=")

One more alternative :

=LET(
     a,FORMULATEXT(B2),
     REPLACE(SUBSTITUTE(a, RIGHT(a, LEN(a)-FIND("*",a)+1),),1,1,))

0

For older Windows versions of Excel, you can use:

=FILTERXML("<t><s>" & SUBSTITUTE(MID(FORMULATEXT(R35),2,255),"*","</s><s>") & "</s></t>","//s[1]")

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .